• 子类初始化时一定要调用父类的构造方法


     1 class Question {     //父类
     2     private String title;    
     3     private String[] options = new String[4];
     4     
     5     Question(String title,String[] optiongs){
     6         this.title = title;
     7         this.options = options;
     8     }
     9     
    10     public String getTitle() {
    11         return title;
    12     }
    13 
    14     public void setTitle(String title) {
    15         this.title = title;
    16     }
    17 
    18     public String[] getOptions() {
    19         return options;
    20     }
    21 
    22     public void setOptions(String[] options) {
    23         
    24         this.options = options;
    25   }
    26 
    27 }

    下面是子类

    class SingleQusetion extends Question{     //单选题类
        
        private char answer;    //单选题答案属性
    
        public char getAnswer() {
            return answer;
        }
    
        public void setAnswer(char answer) {
            this.answer = answer;
        }
    
        SingleQusetion(char answer,String title,String[] options){  //单选题构造函数
            super(title,options);  //这里必须要调用父类的构造函数,调用父类的构造函数时父类里的this.title等无法对此处子类进行初始化,所以就无法获取子类构造函数里传进来的title等参数,无法进行初始化赋值,最终打印出来的结果为null
            this.setTitle(title);  //这里对传进来的参数进行初始化赋值
            this.setOptions(options);
            this.answer = answer;
        }
        
    }

    还有一个困惑,假设父类没有有参构造方法,子类的构造方法里不一定会有super();方法 , 

    public class Test2 extends Test3 {
    
        int age;
        Test2(){
            
            this(3);
            
        }
        
        Test2(int age){
            
            
            this.age = age;
        }
        
        public static void main(String[] args) {
            System.out.println("a");
        }
    }
    
    class Test3{
        
    }

    上面的Test2(){ this(3) }构造方法中,并没有直接调用父类的无参构造方法,可以通过反编译软件查看

  • 相关阅读:
    D365: 笔记(VS无法打开表浏览器)
    D365: 笔记(跟踪调试批处理代码)
    D365: 笔记(非批处理执行class中弹出交互式窗体或报表)
    D365: 笔记(现有量增加批号表字段查询条件)
    D365: 新功能(二)采购发票自动化流程
    D365: 新功能(一)按日期设置编号规则
    ES6 入门教程(未完)
    深入理解TypeScript(未完)
    项目
    vue + threejs 项目踩坑总结
  • 原文地址:https://www.cnblogs.com/uoar/p/7131837.html
Copyright © 2020-2023  润新知