第23节 Java子类的继承性

第23节 Java子类的继承性

子类与继承

利用继承,可以先编写一个共有属性的一般类,根据该一般类再编写具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。

由继承而得到的类称为子类,被继承的类称为父类(超类)。

声明一个类的子类的格式如下:
class 子类名 extends 父类名 {
… …
}

例如:
class Student extends People {
… …
}

子类的继承性

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

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

示例

建立如下包和类
这里写图片描述
如果man和woman想要继承person这个类
这里写图片描述
这里写图片描述

1)子类与父类在同一包中的继承性

如果子类和父类在同一个包中,那么,子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法,继承的成员变量或方法的访问权限保持不变。

Person.java定义了一个speak方法 如图
java4.png

在man和woman类就都可以调用这个speak方法
这里写图片描述
将person类,改为private man中直接报错
这里写图片描述
重新书写并没有speak方法,改为private后已经没有权利继承它了
这里写图片描述

2)子类与父类不在同一包中的继承性

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

示例:
新建如下包和类
这里写图片描述
在person中默认的友好的方式,发现tom不能访问
这里写图片描述

3)关于instanceof运算符

instanceof运算符是Java独有的运算符号。

instanceof是双目运算符,其左面的操作元是对象右面的操作元是类,当左面的操作元是右面的类或子类所创建的对象时,instanceof运算的结果是true,否则是false。

示例:Person.java

package com.blue.main;
import com.blue.test.Tom;
public class Person {
    public void speak(){
        Tom tom = new Tom();
        if(tom instanceof Tom){
            System.out.println("yes");
        }
        if(tom instanceof Person){
            System.out.println("yes");
        }
    }
}

创建一个Demo21主类

package com.blue.main;
public class Demo21 {
    public static void main(String[] args) {
        Person person = new Person();
        person.speak();
    }
}

运行结果 说明我们这个tom是tom类创建的,也是person的子类创建的
这里写图片描述

猜你喜欢

转载自blog.csdn.net/bravery2288/article/details/82383161