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关键字+父类构造器中的参数。

  • 相关阅读:
    Python正则表达式(3)--字符串匹配开头结尾
    Python正则表达式(2)---字符串匹配多个字符
    Python正则表达式(1) --匹配单个字符
    Navicate Premium 永久破解
    升级pip指令
    爬虫(自学)之User Agent 第三方库my_fake_useragent 和 fake_useragent
    django drf 反序列化上传图片
    git的使用
    python 爬虫 基本库使用urllib之urlopen(一)
    吉他入门第三讲~~~~~和弦
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12048593.html
Copyright © 2011-2022 走看看