java重定义继承方式

 
public class Father {
	int a=100;                      //Father类属性a
	public void miner(){            //Father类方法
		a--;
	}
	public static void main(String[] args){
		Father f=new Father();
		Son s=new Son();
		System.out.println("a of son is:"+s.a);               //输出:a of son is 0;
		System.out.println("a of father is:"+f.a);            //输出:a of father is:100
		System.out.println("a of son's super is:"+s.getA());  //输出:a of son's super is:100
		s.miner();                                            //子类调用父类的方法,且仅为对象s实例出来的父类属性a=100-1=99,父类f的属性f.a没变
		System.out.println("a of son is:"+s.a);				  //输出:a of son is:0
		System.out.println("a of father is:"+f.a);            //输出:a of father is:100
		System.out.println("a of son's super is:"+s.getA());  //输出:a of son's super is:99
		s.plus();                                             //调用子类的方法
		System.out.println("a of son is"+s.a);				  //输出:a of son is:1
	}
}

class Son extends Father{          //子类
	int a=0;                       //这里子类Son自定义的属性a,与为从Father中继承下来的属性a是两个属性,占用不同的空间
	public void plus(){
		a++;
	}
	public int getA(){
		return super.a;            //super.a表示访问父类Father的属性a
	} 
}

 

子类重新定义了父类已经存在的方法或变量,称为重定义继承方式。


但需要注意的是:每个继承了父类的子类,对变量的修改仅限于自身,不会影响到父类的变量值


父类与子类定义同名的变量,并不会覆盖,而是各自还有自己的空间,即使变量名相同,子类中调用父类的对同名变量赋值的方法,仍然只是改变自己实例出来的父类的变量值。

也就是说:子类实例出来的父类  与 一开始的父类  不相互影响 。(语文不好,满嘴骚话,见谅)


具体是怎样一回事,上面代码注释标出了变量的改变,自己体会下吧。


讲了这么多,然后我把C++的同名覆盖,重写忘了微笑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值