JAVA三大特性之——继承

这里我们主要对继承的目的概念进行讲解,用代码来进行说明。文章内容还包括public private default protected区别单继承创建实例时子类和父类之间的理解this和super的使用区别向上转型等等。

1.什么是继承(inheritance)

继承 关键词:extends

指面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。继承显现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。简而言之就是子类继承了父类的所有的属性和方法
父类又名(基类或超类),子类又名派生类

2.继承的目的:

为了代码重用和类的重用

3.继承的特点

单继承:Java中一个子类只能继承一个父类,不能进行多继承
正确形式:




咖啡色

小狗

动物


4.继承的主要语法规则

  • 使用extends让新建的子类指向父类(形如pulic Apple extends Fruits);
  • Java中一个子类只能继承一个父类(形如上图所示);
  • 子类会继承父类中的所有的public的属性和方法,private的字段和方法无法访问继承;
  • 创建子类的实例时,会先创建一个父类实例,可以使用super关键字的到父类实例的引用;

5.继承时super和this的区别

super

this

要有继承关系才可以使用

不需要继承关系

访问父类的属性

访问本类的属性,本类没有,则从父类中继续查找

访问父类中的方法

访问本类的方法,本类没有,则从父类中继续查找

调用父类构造,必须放在构造方法的首行

调用父类构造,必须放在子类构造方法首行

super.变量(调用父类的变量)

this.变量(调用当前对象的变量)

super(参数)方法(确认要使用父类的哪一个)

this(参数)

6.继承的具体实现

代码实现如下:
首先定义一个父类,构建其构造方法和属性

class Animal{
    public String name;//定义一个变量
    public Animal(String name){//父类的构造方法
        this.name=name;
    }
    public void eat(String food){//定义一个方法
        System.out.println(this.name+"正在吃"+food);
    }
}

定义一个子类进行继承

class Cat extends Animal{//用extends来继承父类
    public Cat(String name){//传参数接收name
        super(name);//用super调用父类的属性
    }
    public void fly(String 状态){//定义一个父类的方法
        System.out.println(this.name+"正在"+状态+"飞");
    }
}

最后用一个main函数实现打印输出

public class testago {
    public static void main(String[] args) {
        Cat cat = new Cat("啾咪");//对子类实例化实例化
        cat.fly("自由自在地");//调用子类的fly方法,将String定义的“类型”参数定义
        cat.eat("好吃的");//同fly方法
    }
}

7.关于继承中使用的关键字范围

private

default(一般默认为default)

protected

public

适用范围

范围

private

default

protected

public

同一包中的同一类





同一包中的不同类




不同包中的子类



不同包中的非子类