简单易懂说明:static 类型的方法是不能被覆盖的。

简单易懂说明:父类子类方法覆盖,static 类型的方法是不能被覆盖的。

首先,static方法是可以继承的,父类中的static方法,子类也可以调用。

public class Son extends Father{
    public void print(){
        System.out.println("2");
    }

    public static void main(String[] args) {
        Father son=new Son();
        son.print();
    }
}
class Father {
    public void print() {
        System.out.println("1");
    }
}

我们使用的是public类型方法,这样父类和子类的方法名一样的时候,调用时子类的方法就会覆盖父类的。这段代码输出的结果会是“2”。
方法的覆盖需要满足:子类中的方法头和父类中的方法头完全相同,即:应该有完全相同的方法名、返回值类型和参数列表。在满足上述三个条件同时,还必须保证:子类重写父类的方法时,访问权限不能缩小。

public class Son extends Father{
    static void print(){
        System.out.println("2");
    }

    public static void main(String[] args) {
        Father son=new Son();
        son.print();
    }
}
class Father {
    static void print() {
        System.out.println("1");
    }
}

我们使用static类型方法,则输出的结果是“1“;我们调用的是father方法因为使用的是静态static类型方法,则不会被子类son所覆盖。

现在提个小问题,看代码分析一下结果是什么?为什么?(评论区看你们的理解能力,不可以用编译器编译作弊)



class Base{
		int i=99;
		public void amethod() {
			System.out.println("Base.amethod()");
		}
	}
	public class RType extends Base{
		int i= -1;
		public static void main(String args[]) {
		// TODO Auto-generated method stub
		Base b =new RType();
		System.out.println(b.i);
		b.amethod();
	}
		public void amethod() {
			System.out.println("RType.amethod()");
		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值