Java三大特性之继承

继承

继承是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。

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

优点

利用继承可以有效地实现代码的重复使用,子类只需添加新的功能代码即可。
继承体现了一种先进的编程模式。子类可以继承父类的属性和功能,即继承了父类所具有的数据和数据上的操作,同时可以增加子类独有的数据和数据上的操作。比如“人类”继承了 “哺乳类”的属性和功能,又增加了人类独有的属性和功能。

关键字

继承关键字:extends

格式:

class 子类名 extends 父类名{
   .......
}

示例

代码如下:

public class Animal {
     String name ;

    public void eat (String food){
        System.out.println(name + "正在吃" + food);
    }
}


public class Bird  {
     String name ;

    public void eat (String food){
        System.out.println(name + "正在吃" + food);
    }

    public void fly(){
        System.out.println(name + "正在飞");
    }
}


public class Cat {
     String name ;

    public void eat (String food){
        System.out.println(name + "正在吃" + food);
    }

    public void jump(){
        System.out.println(name + "正在跳");
    }
}

关系

这个代码其中存在了大量的冗余代码。
可以看出,Animal、Cat、Bird具有以下一些关系:
1.这三个类都具有一个相同的eat方法,并且行为完全一样
2.这三个类都具备一个相同的name属性,并且意义一样
3.从逻辑上讲,Cat和Bird都是同一种Animal
此时就可以让 Cat 和 Bird 分别继承 Animal 类, 来达到代码重用的效果。则,Cat、Bird就是子类,Animal就是父类。

改进

对于上面的代码, 可以使用继承进行改进. 此时我们让 Cat 和 Bird 继承自 Animal 类, 那么 Cat 在定义的时候就不必再写 name 字段和 eat 方法

完整代码

//主函数
public class Main {
    public static void main(String[] args) {
        Cat cat = new Cat();
        Bird bird = new Bird();
        cat.name = "小黑";
        cat.jump();
        bird.name = "大黑";
        bird.eat("肉");
    }
}

//父类
public class Animal {
     String name ;

    public void eat (String food){
        System.out.println(name + "正在吃" + food);
    }
}

//子类
public class Bird extends Animal {

    public void fly(){
        System.out.println(name + "正在飞");
    }
}

public class Cat extends Animal {

    public void jump(){
        System.out.println(name + "正在跳");
    }
}


//输出为

小黑正在跳
大黑正在吃肉

Process finished with exit code 0

注意事项

在这里插入图片描述
1.java不支持多继承,即一个子类只能继承一个父类,否则就会报错,如上图。
2.子类会继承父类的所有 public 的字段和方法.
3.对于父类的 private 的字段和方法, 子类中是无法访问的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值