java 继承那些事 static super

关于java继承中的super和static问题。关于重写的注意事项

 

1.java 继承中的static变量:假如A为父类,有as变量static int as=50;,然后类B继承类A,并且改写类B的构造函数,内容是改变as的值即 B(){A.as=20;},最后一个类C继承类B。最后测试类C中继承的as的值是50还是20。

//类Aclass
package proj1;

public class Aclass {
	static int as=50;
}

//类Bclass
package proj1;

public class Bclass extends Aclass{
	Bclass(){
		Aclass.as=20;
	}
}

//类Cclass
package proj1;

public class Cclass extends Bclass {
	
}

//主函数
package proj1;

public class main {

	public static void main(String[] args) {	
		System.out.println(Cclass.as);
		Bclass b=new Bclass();
		System.out.println(Cclass.as);
	}
}

最后运行的结果是:所以static类型的变量一直存在于程序运行结束之间,任何方法修改他都会造成值得改变,static类型的变量是共享的静态变量。

 

2.类A为父类,有方法体public void getname(){System.out.print(“A”);}

  1. 类B为A的子类,修改方法体public void getname(){System.out.print(“B”);}
  2. 类C有方法体public void getname(){super.getname();}
package proj1;

public class Aclass {
	public void getname(){
		System.out.print("A");
	}
}


package proj1;

public class Bclass extends Aclass{
	public void getname(){
		System.out.print("B");
	}
}

package proj1;

public class Cclass extends Bclass {
	public void getname(){
		super.getname();
	}
}

package proj1;

public class main {

	public static void main(String[] args) {	
		Cclass c=new Cclass();
		c.getname();
	}
}

运行结果:所以多重继承super调用的方法为离这个类最近的父类的方法

3.重写:在Java程序中重写方法时,需要注意如下两点。
(1)当子类覆盖了父类方法后,子类对象将无法访问父类中被覆盖的方法,但还以在子类方法中调用父类中被覆盖方法。如果需要在子类方法中调用父类中被覆盖的方法,可以使用super(被覆 盖的是实例方法)或者父类类名(被覆盖方法是类方法)作为调用者来调用父类中被覆盖方法


(2)如果父类方法具有私有(private)访问权限,则该方法对其子类是隐藏的,因此其子类无法访问该方法,也就是说无法重写该方法。如果在子类中定义了一个与父类private方法具相同名字的方法,相同形参列表,相同返回值类型的方法,依旧还不是重写,只是在子类中重新定义了一个新方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值