java实验3.(2)基类,子类的初始化顺序
来源:互联网 发布:大学宿舍知乎 编辑:程序博客网 时间:2024/05/29 16:26
初始化顺序(InitTest.java)
构造函数适用于对象初始化的,建立对象时会立即执行构造函数(constructor),如果没有定义构造函数,系统会自动生成一个默认的构造函数并执行。除了在构造函数中初始化建立对象时还可以直接对成员变量进行初始化。
(1)编译和运行InitTest.java,并根据程序和运行结果说明下面建立对象的初始化顺序:
运行代码如下:
class Shape{ String color = "black"; Shape(){ System.out.println("基类无参构造函数(成员变量已初始化):Shape color is "+color); } Shape(String color){ this.color = color; System.out.println("基类有参构造函数(成员变量已初始化):Shape color is " + color); } void draw(){ System.out.println("基类的draw()函数:Shape is drawn! "); }}class Circle extends Shape{ int radius=10; double area; { // 用块(block)进行初始化 area = Math.PI * radius * radius;System.out.println("子类的块初始化"); } Circle(String color){ //super(color); // 调用基类构造器(有参数) System.out.println("子类的有参构造函数(成员变量已初始化):Radius = " + radius + " 快内的初始化:Area = " + area); } void draw(){ //super.draw();// super用于调用基类的同名方法 System.out.println("子类的darw()函数:Circle is drawn!"); }}public class InitTest { InitTest(){ Circle circle = new Circle("red"); circle.draw(); } public static void main(String[] args){ InitTest init = new InitTest(); System.out.println("finish!"); }}
运行结果如下:
基类无参构造函数(成员变量已初始化):Shape color is black子类的块初始化子类的有参构造函数(成员变量已初始化):Radius = 10 快内的初始化:Area = 314.1592653589793子类的darw()函数:Circle is drawn!finish!
说明初始化顺序为:
基类直接执行变量初始化
基类构造函数
导出类的块初始化
导出类直接执行变量初始化
导出类构造函数
(2)super用于调用基类的方法或成员变量。依次去掉两个super的注释,编译执行后通过观察结果,说明它们的功能和增加第一个super引起变化。
Super的作用是能够提供继承的子类,通过它去调用其基类的构造函数或者方法。
去除第一个super的注释前后:
基类有参构造函数(成员变量已初始化):Shape color is red子类的块初始化子类的有参构造函数(成员变量已初始化):Radius = 10 快内的初始化:Area = 314.1592653589793子类的darw()函数:Circle is drawn!finish!可以看到,调用了基类的有参构造函数,color变成了黑色去除第二个super的注释前后变化:
基类有参构造函数(成员变量已初始化):Shape color is red子类的块初始化子类的有参构造函数(成员变量已初始化):Radius = 10 快内的初始化:Area = 314.1592653589793基类的draw()函数:Shape is drawn!子类的darw()函数:Circle is drawn!finish!调用了基类的draw()函数。
0 0
- java实验3.(2)基类,子类的初始化顺序
- java 类及子类的初始化顺序
- Java中父类子类初始化顺序
- JAVA中子类与父类对象的初始化顺序
- [5v]Java继承中父类与子类的初始化顺序
- Java继承中父类与子类的初始化顺序
- Java继承中父类与子类的初始化顺序
- Java子类与父类的初始化,父类子类內部程序的执行顺序
- Java子类与父类的初始化,父类子类內部程序的执行顺序
- Java子类父类初始化顺序
- java中父类和子类初始化顺序
- java子类、父类、构造初始化顺序
- java初始化顺序实验代码
- 子类对象初始化顺序
- 父类 子类 初始化顺序
- java 父类子类静态成员,实例成员,构造函数初始化的顺序
- java 父类子类静态成员,实例成员,构造函数初始化的顺序
- Java父类、子类、静态成员和普通成员初始化的顺序
- NYOJ 2184 Cow Exhibition(01背包+变形)
- sdut_java_集合相等问题
- struts2上传文件
- AndroidStudio中使用AIDL实现进程间通信
- 修改
- java实验3.(2)基类,子类的初始化顺序
- Ext属性详细信息
- 平常水题
- Android的存储----重新认识Android(9)
- 常用算法思想
- 论文笔记:Mask R-CNN
- echarts 地图的切换注意点
- openwrt包的Makefile分析
- com.mysql.jdbc.exceptions.jdbc常见异常