「java成员覆盖」java覆盖的概念

博主:adminadmin 2022-12-08 13:18:07 64

本篇文章给大家谈谈java成员覆盖,以及java覆盖的概念对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java中有关成员变量的覆盖???

apple 类继承fruit类,就继承了fruit的weight属性,你在apple里定义weight会覆盖fruit类的,所以输出的都是11

java小问,关于子类覆盖父类成员方法的问题

这里考虑覆盖关系还要考虑类的初始化顺序

这里其实是涉及类的初始化。

因为有继承关系,所以它在调用子类Atest()构造器前,先调用了父类的构造器,有个隐藏的 super();调用,但因为test()被覆盖,它会调用子类的test(),这时子类的成员变量只是定义,还未进行初始化赋值,而int型的默认初始值为0,如果你把i变成String型,你会发现第一次输出为null

java中子类能覆盖父类的成员变量吗

答案是:不可以!

成员变量是不可以覆盖的,但可以各自有同名的private变量(必须private!)

JAVA中方法重载和成员覆盖是同一回事吗

不是;大概如下几点区别:

1、重载的方法发生在同一个类,而重写覆盖的方法发生在父类和子类之间

2、重载方法仅

形参

列表不同而已,调用时根据

实参

数据类型调用对应的方法;而重写就方法体不一样,访问类修饰符也可以大于父类。

JAVA成员变量隐藏和方法的覆盖

从入口程序main开始看,第一句话是

Subclass Subc=new Subclass();

其作用是实例化Subclass类的一个实例出来,使用的构造函数是无参构造函数。

现在转向看Subclass类,在这个类的无参数构造函数中代码如下:

Subclass(){

super();//A

x=5;//B

System.out.println("in Subclass:x="+x);//②

}

可以看得见第一句使用的是super()方法,起作用是继承父类Superclass的构造方法:

Superclass(){

x=3;

System.out.println("in Superclass:x="+x);//①

}

也就是说Subclass()方法代码内容是如下的内容:

Subclass(){

x=3;

System.out.println("in Superclass:x="+x);//①

x=5;//B

System.out.println("in Subclass:x="+x);//②

}

所以现在这里有两个输出语句,结果如下:

in Superclass:x=3

in Subclass:x=5

现在返回入口程序main()方法,开始执行该方法中的第二句话:

Subc.dosomething();

这句话的作用是执行Subclass类中的dosomething方法,所以我们查看Subclass类的方法void dosomething()内容如下:

super.dosomething();

System.out.println("in Subclass.dosomething()");

System.out.println("super.x="+super.x+"\tsub.x="+x);

可以看到,第一句话super.dosomething();是继承父类的dosomething()方法,用父类的这个方法内容替换掉这句话,void dosomething()内容如下:

System.out.println("in Superclass.dosomething()");//③

System.out.println("in Subclass.dosomething()");//④

System.out.println("super.x="+super.x+"\tsub.x="+x);//⑤

所以这里就是连续输出三句话:

in Superclass.dosomething()

in Subclass.dosomething()

super.x=3 sub.x=5

一定要知道super的作用,super()就是使用父类的构造函数,super.属性/s uper.方法,就是使用父类属性/方法。

关于java成员覆盖和java覆盖的概念的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-08,除非注明,否则均为首码项目网原创文章,转载请注明出处。