文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java面向对象关键字extends继承的深入讲解

2024-04-02 19:55

关注

一、 问题引出

面向对象的编程思想使得代码中创建的类更加具体,他们都有各自的属性,方法。有的时候一些客观事物之前存在一些联系,那么他们在代码中的具体类也存在一些联系。
例如:设计一个动物类


public class Animal {
     public String name;
     public int age;
    public Animal(String name) {
        this.name = name;
    }
     public Animal(int age) {
        this.age = age;
    }
    public void eat(){
        System.out.println(this.name+"吃东西");
    }
}

这个动物类有自己的name,age属性和eat方法

我们又想创建一个猫类和狗类


class cat {
    public  String name;
    public  int age;
    public cat(String name) {
        this.name = name;
    }
    public cat(int age) {
        this.age = age;
    }
    public void eat(){
        System.out.println(this.name+"吃饭");
    }
}
class dog{
    public  String name;
    public int age;

    public dog(int age) {
        this.age = age;
    }

    public dog(String name) {
        this.name = name;
    }
    public  void  eat(){
        System.out.println(this.name+"干饭");
    }
}

由于大家都是碳基生物,你要吃饭我也要吃饭,你有名字我也有名字,也都有自己的年龄,我们在创建其他类的时候还需要在写一遍他们的属性name,age,和方法eat。并且,从逻辑上来说猫和狗都属于动物。这就造成了大量重复的代码,那有没有什么办法能让我不用把这些属性。方法在写一遍呢?

继承:我来啦!!!

继承作为面向对象编程的一个非常重要的关键字,在C++,和Java当中都可以使用它来减少代码冗余。顾名思义,它可以让一个子类继承另一个父类,就像儿子继承爸爸的财产一样,继承后的子类可以拥有父类的方法,属性,这样每次在定义动物类完之后,在想要定义狗或者猫类的时候就不用再把多余的代码写一遍了。我们来看看效果。

二、继承extends

2.1 继承的用法

子类extends父类即可


class cat extends animal{
    public cat(String name) {
        super(name);
    }
    public cat(int age){
        super(age);
    }
    public  void catchMouce(){
        System.out.println(this.name+"抓老鼠");
    }
}
class dog extends animal{
    public dog(String name) {
        super(name);
    }

    public dog(int age) {
        super(age);
    }
    public  void defence(){
        System.out.println(this.name+"看家");
    }
}


在上面的代码中,cat,dog被称为子类、派生类,而animal被称为父类或者超类,extends英文意思为扩展,这里可以理解成继承,例如我们写的cat类有了抓老鼠的方法,dog类有了看家的方法。继承可以让子类拥有父类public修饰的属性和方法,cat、dog类就继承了animal类的name、age属性以及eat方法。

2.2 基本语法

使用 extends 指定父类.

子类会继承父类的所有 public 的字段和方法.

对于父类的 private 的字段和方法, 子类中是无法访问的.

子类的实例中, 也包含着父类的实例. 可以使用 super 关键字得到父类实例的引用

子类继承父类之后,还可以声明自己特有的属性和方法,实现功能的拓展。

2.3继承的好处

1:减少代码的冗余,提高复用性。

2:便于功能的拓展

3:为多态提供了前提。

2.4继承性

Java各种类互相继承的属性称作继承性,继承性有一些规定。

1:一个类可以被多个子类继承。

2:Java的单继承性:一个子类只能继承一个父类。比如一个儿子只能有一个亲爸爸,一个爸爸可以有好几个儿子。在C++,和python中支持多继承

3:如果一个类没有说明一个类的父类的话,那么此类继承于java.lang.Object类

4:所以的类(除了java.lang.Object)都间接或直接的继承java.lang.Object类。那么就意味这所有的类都具有java.lang.Object类声明的功能。

总结

到此这篇关于Java面向对象关键字extends继承的文章就介绍到这了,更多相关Java关键字extends继承内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯