1.父类

public class Person {

    private String name = "李四";

    private int age;

    public Person() {
System.out.println("Person的构造方法执行了!");
System.out.println(this.getClass().hashCode());
} public Person(String name, int age) {
this.name = name;
this.age = age;
} public String getName() {
return name;
} public int getAge() {
return age;
} public void setName(String name) {
this.name = name;
} public void setAge(int age) {
this.age = age;
}
}

2.子类

public class Student extends Person {

    private double mark;

    private int num;

    private String name = "赵六";

    public Student() {
// 系统会默认有一个super();
super();
System.out.println("Student的构造方法执行了");
System.out.println(this.getClass().hashCode());
} public Student(double mark, int num) {
// super可以用在构造函数中,为了代码的重复利用,还可以初始化从父类继承过来的属性
super("张三", 10);
this.mark = mark;
this.num = num;
} public void study() {
System.out.println(super.getName() + "在学习!");
} // ================================================================== public double getMark() {
return mark;
} public int getNum() {
return num;
} public void setMark(double mark) {
this.mark = mark;
} public void setNum(int num) {
this.num = num;
}
}

3.测试类:

public class Test {
public static void main(String[] args) {
/**
* 在创建子类对象的时候会先调用父类的构造方法
* 调用父类的构造方法仅仅是为了给继承过来的父类属性初始化而已,并不会创建父类对象!
*/
Student student1 = new Student();
Student student2 = new Student(100.0, 001);
student2.study();
}
}

在此,我也翻了很多论坛,调用构造方法并不一定会创建对象,new 的时候才一定会创建对象,,也就是构造方法的执行不一定会创建对象

super跟this不同,this是一个引用,是一个地址,而super仅仅代表父类的特征,特征,特征

===================================================================================

更新时间:2017年12月21日22:06:48 ------->构造方法的执行并不一定会创建对象例证:

1.抽象父类:

public abstract class AbstractObject {

    public AbstractObject() {
System.out.println("抽象类的构造方法执行了!");
} }

2.子类:

public class SomeObject extends AbstractObject {

    public SomeObject() {
System.out.println("子类的构造方法执行了!");
} }

3.测试类:

public class Test01 {

    public static void main(String[] args) {

        // 抽象类无法new对象
// AbstractObject obj = new AbstractObject();
SomeObject obj = new SomeObject(); } }

4.执行结果:

抽象类的构造方法执行了!
子类的构造方法执行了!

结论:众所周知抽象类是不能够创建对象的,可见父类的构造方法执行了,但是不会创建父类的对象,突发奇想,特来mark一下

super关键字小结(构造方法的执行是不是一定会创建对象?)的更多相关文章

  1. Java之构造方法及this、super关键字

    有关构造方法的理解: 需要对对象的数据进行初始化,则创建一个构造方法,此方法名字和类名一样,但是没有返回值(类型和具体的值都没,但是可以写return;).构造方法是用来创建对象的,所以是不能被对象调 ...

  2. Class的使用,构造方法,实例属性和实例方法,静态属性和静态方法,this和super关键字,类的继承

    s6新增了一种定义对象实例的方法,Class(类)这个概念,作为对象的模板.class可以看作只是一个语法糖,通过class关键字,可以定义类.让对象原型的写法更加清晰.更像面向对象编程的语法. 一. ...

  3. Java基础-super关键字与this关键字

    用super调用父类构造方法 类如果没有显式声明构造方法,则自动生成无参数的默认构造方法. 1.先用一个无参数的父类构造方法验证一下, 执行子类构造方法会自动调用父类的构造方法.测试代码: class ...

  4. java中关于类的封装与继承,this、super关键字的使用

    原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/5454849.html. this关键字: this代表当前对象,它有以下几种用途: 1.本类 ...

  5. this关键字、访问修饰符、super关键字

    this关键字.访问修饰符.super关键字 Java关键字this只能用于方法方法体内,而且只能用在非静态方法内.当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个 ...

  6. 8.8.1 Super关键字

    Super关键字 1.super不是引用类型,super中存储的不是内存地址,super指向的不是父类对象. 2.super代表的是当前子类对象中的父类型特征. //通过子类的构造方法去调用父类的构造 ...

  7. JAVA面向对象-----super关键字

    JAVA面向对象-–super关键字 1:定义Father(父类)类 1:成员变量int x=1; 2:构造方法无参的和有参的,有输出语句 2:定义Son类extends Father类 1:成员变量 ...

  8. Java基础super关键字、final关键字、static关键字、匿名对象整理

    super关键字 10.1子父类中构造方法的调用 public class Test { public static void main(String[] args) { new Zi(); } } ...

  9. es6 super关键字

    rhttp://es6.ruanyifeng.com/#docs/class-extends super关键字,既可以当作函数使用,也可以当作对象使用.这俩种的使用是不一样的 第一种:函数使用 代表父 ...

随机推荐

  1. [CF1051F]The Shortest Statement_堆优化dij_最短路树_倍增lca

    The Shortest Statement 题目链接:https://codeforces.com/contest/1051/problem/F 数据范围:略. 题解: 关于这个题,有一个重要的性质 ...

  2. Cookies和Sessions

    Cookie和Session 为什么会有cookie和session? 由于http协议是无状态的 无法记住用户是谁,cookie主要是在浏览器上记录客户的状态,session主要是用来在服务端记录客 ...

  3. SpringBoot中使用@Scheduled创建定时任务

    SpringBoot中使用@Scheduled创建定时任务 定时任务一般会在很多项目中都会用到,我们往往会间隔性的的去完成某些特定任务来减少服务器和数据库的压力.比较常见的就是金融服务系统推送回调,一 ...

  4. Python习题001

    作业1 * 用条件语句写一个BMI(体重除以身高的平方)指数* 低于18.5:过轻* 18.5 - 25 正常* 25 - 28 过重* 28 - 32 肥胖* 高于32 严重肥胖 weight = ...

  5. jmeter中生成UUID作为唯一标识符

    在测试过程中,我们有时候需要一个唯一不重复的值(比如order_id).我之前一直用的时间戳+计数器/随机函数拼接,但是有时候效果不太好,今天知道了UUID这玩意,可以来操作下.jmeter也提供了U ...

  6. git push error. ! [rejected] master -> master (non-fast-forward)

    错误提示: Cheetah@xxxx MINGW64 /e/Projs/enft/data/cv_key_frame (master) $ git push To github.com:Anthony ...

  7. java模板模式项目中使用--封装一个http请求工具类

    需要调用http接口的代码继承FundHttpTemplate类,重写getParamData方法,在getParamDate里写调用逻辑. 模板: package com.crb.ocms.fund ...

  8. 【转载】Asp.Net中Cookie对象的作用以及常见属性

    Cookie对象是服务器为用户访问存储的特定信息,这些信息一般存储在浏览器中,服务器可以从提交的数据中获取到相应的Cookie信息,Cookie的最大用途在于服务器对用户身份的确认,即票据认证,用户会 ...

  9. alt和title的区别

    alt是html标签的属性,而title既是html标签,又是html属性. 在图像标签img中,除了常用的宽度width和高度height属性之外,还有两个比较重要并且也会用到的属性,就是alt和t ...

  10. html+css+javascript网页制作技巧总结1

    (一)div.元素居中中显示方法: 1.宽度要有实际值或百分比值 2.margin:0px auto; 文本内容居中显示的方法: 1.text-align:center; 2.line-height: ...