java重定义继承方式

    xiaoxiao2021-12-03  58

    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++的同名覆盖,重写忘了

    转载请注明原文地址: https://ju.6miu.com/read-680095.html

    最新回复(0)