下面展示一些 代码
。
class Person{
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
class Student extends Person{
private String stuNo;
private String schoolName = "唐山学院";
public Student() {
}
public Student(String name, int age, String stuNo, String schoolName) {
super(name, age);
this.stuNo = stuNo;
this.schoolName = schoolName;
}
}
class Test{
public static void main(String[] args) {
Student student = new Student();
}
}
创建对象大体分为四步:
1开辟内存空间并进行初始化
2递归调用父类的创建对象过程
3初始化本类属性
4调用构造方法
对上面的四步进行具体分析
1.开辟内存空间并进行初始化:此时我们的student对象已经开辟了内存空间并且有一个虚地址值,此时对于初始化的理解是各个类型的默认值。
2.调用父类的构造方法
public Student() {
//super();
}
当我们调用子类的构造方法时,都会默认的调用父类的无参构造方法。(此时进入父类的构造方法,遵循上面的四步原则)。super()或者this(),只能放在构造方法的第一行。只可存在一个。
3.
此时进行初始化属性
4.调用构造方法中实际代码。
总结一下构造方法内部运行其实是这样的,个人认为,本人小菜鸟,只是发表一下自己的看法
这是一个构造方法
public Student() {
1.开辟内存空间
2.为成员属性进行初始化,即为成员设置默认值 0 null ‘/u0000’
3.suer()如果没有父类省略,如果有的话进入父类构造方法依旧如此执行
4.若对属性进行直接赋值 shoolName = “唐山学院” 进行此赋值操作。
5.调用,构造方法中其他语句
}
若有父类总体步骤为
父类静态方法>子类静态方法>父类初始化(默认值操作)>父类构造方法>子类初始化(默认值操作)>子类构造方法
其实是先调用子类的构造方法,但是子类构造方法并未执行完毕,就进入父类构造方法,所以其实是父类先执行完,先执行完,所以排在前面。
OCR光学字符识别OPTICAL CHARACTER RECOGNITION作为计算机视觉领域的经典问题之...
来自:机器之心 最近在 GitHub 上最火的项目是一个对视力友好的十六进制编辑器,...
有时候我么您需要获取网址,端口、路径文件名、参数等,这里就为大家分享一下这...
本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参...
为什么我们需要它 不得不说,在知道这个命令的时,以及之后的使用中,我都超级热...
JSP开发中Apache-HTTPClient 用户验证的实例详解 前言: 在微服务框架之外的系统...
微软确认, 将会在Win10 Build 19043.899(21H1)更新中,彻底从系统中删除经典...
HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、...
如往常一样, 客户发给我一个xml文件, 用来更新数码课堂日程安排——是一个js读...
前言: 今天这篇文章给大家介绍关于ajax的content-download时间过慢问题的解决与...