zoukankan      html  css  js  c++  java
  • java abstract构造函数调用

    构造函数是对象的基本,没有构造函数就没有对象。
    如果在父类中(这里就是你的抽象类)中显示的写了有参数的构造函数,在子类继承是就必须写一个构造函数来调用父类的构造函数

    public abstract class Person {
        int a = 0;
    
      //如果不写Person(),java会默认加上一个不带参数的构造函数,即Person(){};
    Person() { a
    = 10;
         System.out.println("class is " + Person.class);
    } Person(
    int x) { a = x; } }

    子类

    public class Student extends Person {
        int b = 0;
    
    Student() {
         //super();//可不写,默认调用Person(); b
    = 100;
         System.out.println("class is " + Student.class); } Student(
    int x) {
         //super(x);此处若不显示调用父类的带参构造函数,则默认调用 无参 构造函数Person();
    b
    = 200;
    } }

    测试类

    public class abTest {
        
        public static void main(String[] args) {
             Student s = new Student();
            System.out.println(s.a);
    
            Student s1 = new Student(1000);
            System.out.println(s1.a);
        }
    }

    输出

    class is class AbstractClz.Ab_1.Person
    class is class AbstractClz.Ab_1.Student
    10
    class is class AbstractClz.Ab_1.Person
    10

    结论:

    无参:调用子类的构造函数前,先执行父类的构造函数。

    带参:带参构造函数需显示调用super(x),才能调用父类的Person(int x),否则调用默认Person();

  • 相关阅读:
    [C#1] 2类型基础
    [C#2] 5迭代器
    [C#1] 6方法
    [C#1] 8数组
    [C#1] 12特性
    [C#1] 10事件
    [C#2] 2匿名方法
    实用代码JavaScript实用小函数一枚(深入对象取值)
    [C#1] 11接口
    实用代码C#获取本机网络适配器信息及MAC地址
  • 原文地址:https://www.cnblogs.com/pu20065226/p/10065668.html
Copyright © 2011-2022 走看看