zoukankan      html  css  js  c++  java
  • Android(java)学习笔记60:继承中父类 没有无参构造

    1. 继承中父类 没有无参构造:

     1 package com.himi.test1;
     2 
     3 /*
     4     如果父类没有无参构造方法,那么子类的构造方法会出现什么现象呢?
     5         报错。
     6     如何解决呢?    
     7         A:在父类中加一个无参构造方法
     8         B:通过使用super关键字去显示的调用父类的带参构造方法
     9         C:子类通过this去调用本类的其他构造方法
    10             子类中一定要有一个去访问了父类的构造方法,否则父类数据就没有初始化。
    11             
    12     注意事项:
    13         this(...)或者super(...)必须出现在第一条语句上。
    14         如果不是放在第一条语句上,就可能对父类的数据进行了多次初始化,所以必须放在第一条语句上。
    15 */
    16 class Father {
    17     /*
    18     public Father() {
    19         System.out.println("Father的无参构造方法");
    20     }
    21     */
    22     //如果没有写构造方法,默认有无参构造,这里写了带参构造,无参构造变成了带参构造
    23     public Father(String name) {
    24         System.out.println("Father的带参构造方法");
    25     }
    26 }
    27 
    28 class Son extends Father {
    29     public Son() {
    30         super("随便给");
    31         System.out.println("Son的无参构造方法");
    32         //super("随便给");
    33     }
    34     
    35     public Son(String name) {
    36         //super("随便给");
    37         this();
    38         System.out.println("Son的带参构造方法");
    39     }
    40 }
    41 
    42 public class ExtendDemo2 {
    43     public static void main(String[] args) {
    44         Son s = new Son();
    45         System.out.println("----------------");
    46         Son ss = new Son("林青霞");
    47     }
    48 }

    运行结果:


    这里子类son创建对象的时候,无论它使用无参构造和带参构造,即无论使用new Son(),new Son("林青霞"),这里这些构造方法中默认第一条语句是必须隐式默认是super(),也就是父类的无参构造方法,利用父类的无参构造函数去初始化父类携带的数据,从而提供给子类Son使用。通常父类如果不写构造的话,系统默认父类为无参构造,但是如果父类写了带参构造,那么无参构造就会覆盖掉,这样父类Father()也就没有无参构造了,这样的话前面Son()创建对象时候就会出错。但是也可以显式利用super("name"),调用父类带参构造初始化

  • 相关阅读:
    day25:接口类和抽象类
    vue1
    How the weather influences your mood?
    机器学习实验方法与原理
    How human activities damage the environment
    Slow food
    Brief Introduction to Esports
    Massive open online course (MOOC)
    Online learning in higher education
    Tensorflow Dataset API
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4631091.html
Copyright © 2011-2022 走看看