zoukankan      html  css  js  c++  java
  • java之父类中的构造器是否能被子类继承?

    子类默认继承父类的属性和方法,但不会继承父类的构造器,而是在子类被实例化时会默认调用父类的空构造器。子类在创建的时候会调用自己的空构造器,并在空构造器会隐式调用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关键字+父类构造器中的参数。

  • 相关阅读:
    启动时间知多少?8款音视频类应用测评报告分析
    优化信息流很麻烦?三招教你轻松搞定
    vmstat
    iostat
    dstat
    strace
    Mysql(一)
    rsync
    Kubernetes-深入分析集群安全机制
    Kubernetes-apiserver
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12048593.html
Copyright © 2011-2022 走看看