博客
关于我
java之父类中的构造器是否能被子类继承?
阅读量:462 次
发布时间:2019-03-06

本文共 1165 字,大约阅读时间需要 3 分钟。

子类默认继承父类的属性和方法,但不会继承父类的构造器,而是在子类被实例化时会默认调用父类的空构造器。子类在创建的时候会调用自己的空构造器,并在空构造器会隐式调用super(),即父类的空构造器。如果父类的构造器被重载,那么子类中的构造器也必须初始化父类的构造器,否则会报编译错误。当然,只要父类中显示定义了空构造器,子类中就不必初始化父类的构造器。例如:

父类Person.java

package myjava;public class Person {    private String name;    private int age;    public void setName(String name) {        this.name = name;    }    public String getName() {        return this.name;    }    public void setAge(int age) {        this.age = age;    }    public int getAge() {        return this.age;    }        public Person(String name) {        this.name = name;    }}

子类:Student.java

package myjava;public class Student extends Person{    //这里必须初始化父类重载后的构造方法,否则会报错    public Student(String name) {        super(name);    }    }

Test.java

package myjava;public class Test {    public static void main(String[] args) {                Person p = new Person("tom");        Student stu = new Student("jack");        String personName = p.getName();        String studentName = stu.getName();        System.out.println(personName);        System.out.println(studentName);}

输出:

tom

jack

说明:此时父类中没有显示定义空构造器,只有一个重载了的构造器,在子类构造器中,必须初始化父类的构造器,即super关键字+父类构造器中的参数。

转载地址:http://iwsbz.baihongyu.com/

你可能感兴趣的文章
mysql复制内容到一张新表
查看>>
mysql复制表结构和数据
查看>>
mysql复杂查询,优质题目
查看>>
MySQL外键约束
查看>>
MySQL多表关联on和where速度对比实测谁更快
查看>>
MySQL多表左右连接查询
查看>>
mysql大批量删除(修改)The total number of locks exceeds the lock table size 错误的解决办法
查看>>
mysql如何做到存在就更新不存就插入_MySQL 索引及优化实战(二)
查看>>
mysql如何删除数据表,被关联的数据表如何删除呢
查看>>
MySQL如何实现ACID ?
查看>>
mysql如何记录数据库响应时间
查看>>
MySQL子查询
查看>>
Mysql字段、索引操作
查看>>
mysql字段的细节(查询自定义的字段[意义-行列转置];UNION ALL;case-when)
查看>>
mysql字段类型不一致导致的索引失效
查看>>
mysql字段类型介绍
查看>>
mysql字段解析逗号分割_MySQL逗号分割字段的行列转换技巧
查看>>
MySQL字符集与排序规则
查看>>
MySQL字符集乱码
查看>>
mysql字符集设置
查看>>