【java基础知识】面向对象三大特性之继承

1.复用类

(1)组合:把一个类当做对象放到另一个类里面去使用
(2)继承:基于已存在的类构造一个新类。
*已存在的类称为父类、基类或超类;
*新类称为子类、派生类、或孩子类。
(3)继承与组合的关系
*继承表现为一般——特殊的关系,子类是一个特殊的父类,是is-a的关系。父类具有所有子类的一般特性。
*组合表现为整体——部分关系,即has-a关系。在组合中,通过将“部分”单独抽取出来,形成自己的类定义,并且在“整体”

2.继承的定义:
实现类重复利用的重要手段,通过继承,子类可以具有父类中定义的方法和属性,子类还可以根据需求添加自己的方法和属性,因此在定义父类和子类类型时,只要通过继承关键字指明两者属于父子关系,那么子类就可以通过继承机制拥有父类的行为和特征。

3.继承定义格式:

[<修饰符>] class <子类名> extends <父类名> {
    [<属性定义>]
    [<构造方法定义>]
    [<方法声明>]
}

注意:定义类只能使用单继承,且子类无法继承父类的构造方法,同时父类中private关键字修饰的属性和方法,子类是无法继承的。如果子类和父类不在同一个包下,default状态的属性和方法也无法继承。

4.几种关键字的介绍

(1)extends关键字:
紧跟在类名后面用于继承父类

(2)super关键字
*用于调用父类中的构造函数;
*调用父类中的方法和属性。

(3)final关键字
*可以在类、成员变量和方法之前进行修饰;
*final修饰类:表示该类不能被继承;
*final修饰成员变量:表示该类是一个常量;
*final修饰方法:表示该方法在类中不能被重写.

(4)instanceof关键字
*一个二元操作符,其作用是判断某个对象是否为某个类或接口类型
*当instanceof左侧操作数为右侧操作数指定的类型或者子类型时返回true,否则返回false.

例:

public class Person{
    String name;
    int age;

    public Person(String name,int age) {
        this.name = name;
        this.age = age;
    }

    public String getName(){
        return this.name;
    }

    //final方法不能被继承
    public final void setAge(int age) {
        this.age = age;
    }
}

class Student extends Person{
    int number;
    private final int ID_CARD = 612236; //ID_CARD的值不能改变

    public Student(String name, int age, int number){
        super(name,age);  //调用父类的构造函数
        this.number = number;
    }

    public static void main(String[] args){
        Student t = new Student("Lee",21,1001);
        //因为Student是Person的子类,所以返回true
        System.out.println(t instanceof Person);   
        //getName()是从父类继承而来
        System.out.println(t.getName());
    }
}





本人才疏学浅,如有错误,请指出~
谢谢!

你可能感兴趣的:(java)