面向对象深入:继承01——子类

摘自《其实你应该这样学Java》

11.1  什么是继承

Java中的继承分为类的继承接口的继承两种,

类的继承只支持单继承,就是子类只能有一个父亲类

接口的继承可以是多重继承,可以有多个父亲类。

11.2  子类

11.2.2 子类的使用

子类隐式包含父类的成员变量和方法,不用再写,这就是继承的优点。

子类包含父类的成员,不是子类和父类共享成员,而是子类和父类中都能各自开辟空间,产生性质相同而又独立的成员变量和方法。

11.2.3 子类的构造方法

在子类创造对象时会执行子类的构造方法。

因为子类继承自父类,所以在子类构造方法之前必须先执行父类的构造方法。

在子类构造方法中第一条语句必须是调用父类的构造方法的语句,如果无此语句,则默认调用无参的父类构造方法。

public class Example1102
{
    public static void main(String [] args)
    {
        SonClass sc = new SonClass();
    }
}

class SuperClass
{
    SuperClass()
    {
        System.out.println("Super");
    }
}
class SonClass extends SuperClass
{
   SonClass()
   { 
        System.out.println("SubClass");
    }
}       

该程序由父类 SuperClass 和子类 SonClass 及主类组成。主类中只有生成子类对象的语句:

SonClass sc = new SonClass();

这条语句执行时,会调用子类构造方法;

在子类构造方法中,第一条语句要执行父类构造方法

上面子类中构造方法是隐式调用父类构造方法。(a. 隐式调用的是默认无参构造方法

也可以b. 显示调用父类构造方法,通过语句super()来完成。

如果要c. 调用父类的有参构造方法,则在super()的括号中加入所需的参数。

d. 如果父类构造方法不带参数,则这样的显示调用可以省略,这种调用是由Java程序自动进行的(隐式调用)。

e. 如果父类中没有无参的构造方法,只有一个或多个有参构造方法,则程序找不到默认无参方法,就一定要用super(参数a, 参数b, ...)调用父类构造方法

    1. public class Example1103
      {
          public static void main(String[] args)
          {
              SonClass sc = new SonClass();
          }
      }
      
      class SuperClass
      {
          SuperClass(int a, int b)
          {
              System.out.println(a+b);
          }
      }
      class SubClass extends SuperClass
      {
          SonClass()
          {
              super(1, 2);  //父类中是有参构造方法,需要super()
              System.out.println("SubClass");
          }
      }
原文地址:https://www.cnblogs.com/jolene-wu/p/8284386.html