「java成员覆盖」java覆盖的概念
本篇文章给大家谈谈java成员覆盖,以及java覆盖的概念对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中有关成员变量的覆盖???
- 2、java小问,关于子类覆盖父类成员方法的问题
- 3、java中子类能覆盖父类的成员变量吗
- 4、JAVA中方法重载和成员覆盖是同一回事吗
- 5、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覆盖的概念的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-08,除非注明,否则均为
原创文章,转载请注明出处。