learn-java

子类

继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。由继承而得到的类称为子类,被继承的类称为父类(超类)。

Java不支持多重继承(子类只能有一个父类)。

声明子类

使用关键字extends来定义一个类的子类,格式如下:

class 子类名  extends  父类名 {
                  
} 
           class Student extends People {
                 
           }
//说明:把Student类定义为People类的子类、People类是Student类的父类 

类的树形结构

Java的类按继承关系形成树形结构这个树形结构中,根节点是Object类(Object是java.lang包中的类),即Object是所有类的祖先类。

除了Object类,每个类都有且仅有一个父类,一个类可以有多个或零个子类。如果一个类(除了Object类)的声明中没有使用extends关键字,这个类被系统默认为是Object的子类,即类声明“class A”与“class A extends Object”是等同的。

子类的继承性

类可以有两种重要的成员:成员变量和方法。子类的成员中有一部分是子类自己声明定义的,另一部分是从它的父类继承的。

所谓子类继承父类的成员变量就是把继承来的变量作为自己的一个成员变量,就好象它们是在子类中直接声明一样,可以被子类中自己定义的任何实例方法操作。

所谓子类继承父类的方法就是把继承来的方法作为子类中的一个方法,就好象它们是在子类中直接定义了一样,可以被子类中自己定义的任何实例方法调用。

//例题:子类的继承

class Father 
{  float weight,height;
    String head;
    void speak(String s)
    {  System.out.println(s);
    }
}
class Son extends Father 
{   String hand,foot;
}
 
   Son s=new Son();

作用域 当前类 同一包 不同包子孙类 不同包其他类
public 1 1 1 1
protected 1 1 1 0
friendly 1 1 0 0
private 1 0 0 0

子类和父类不在同一包中的继承性

如果子类和父类不在同一个包中,那么,子类继承了父类的protected、public成员变量做为子类的成员变量,并且继承了父类的protected、public方法为子类的方法,继承的成员或方法的访问权限保持不变。

public class People { 
    int age,leg = 2,hand = 2;
    public void showPeopleMess() {
       System.out.printf("%d岁,%d只脚,%d只手\t",age,leg,hand);
    }    
}

public class Student extends People {
   int number;
   void tellMessage() {
        showPeopleMess();
   }
} 

子类与对象

子类继承了父类的很多东西,那么子类在创建对象的时候,他又是怎么生成自己的对象的呢。子类生产的对象会有哪些东西呢。

子类继承之后,未继承的也是有的,占空间的,只不过没办法用

子类对象的生成

子类创建对象时,子类的构造方法总是先调用父类的某个构造方法,完成父类部分的创建;然后再调用子类自己的构造方法,完成子类部分的创建。如果子类的构造方法没有明显地指明使用父类的哪个构造方法,子类就调用父类的不带参数的构造方法 。

子类在创建一个子类对象时,不仅子类中声明的成员变量被分配了内存,而且父类的所有的成员变量也都分配了内存空间(子类没继承的也分配空间),但子类只能操作继承的那部分成员变量 。

子类可以通过继承的方法来操作子类未继承的变量和方法 .

调用子类构造方法时,先父类的构造方法,再调用子类构造方法

1)创建子类对象时,子类总是按层次结构从上到下的顺序调用所有超类的构造函数。如果继承和组合联用,要先构造基类的构造函数,然后调用组合对象的构造函数(组合按照声明的顺序调用)。

C继承B,B继承A,C生成对象,最远的A先构造

2)如果父类没有不带参数的构造方法,则在子类的构造方法中必须明确的告诉调用父类的某个带参数的构造方法,通过super关键字,这条语句还必须出现在构造方法的第一句。