Java面向对象三大特征之一继承(轻装上阵的子类们)含有查看继承关系快捷键

简介: 继承是类和类之间的关系。除此之外,类之间还有依赖、组合、聚合等关系

一、继承解释:

直白解释在文章末尾

1.继承是类和类之间的关系。除此之外,类之间还有依赖、组合、聚合等关系

2.子类(派生类)把父类(基类、超类)继承后,拥有了父类的全部方法(除了构造方法不能被继承,但是你可以访问)。又扩展了其他功能

3.java中只有单继承,没有多继承(一个儿子只能有一个爸爸,但是一个爸爸可以有多个儿子)

4.继承就是类和类的分裂套娃,和对象关系不大,对象只是调用而已

5.重写快捷键:ctrl+o

 小说情景理解化:(类说:我一个人要被那么多对象调用,而且他们的需要又不一样,那得需要我多少类兄弟啊也不够啊,我想想办法......

我想到办法了,我可以把我和其他类通用的东西分裂出去,然后我们兄弟管那个共同的类,叫父类。这样我们的负担就减轻一点了,我们需要的大部分东西也可以通过父类那边给我们就好了。对象调用我们的不同需求功能。也只需要对我们子类改一点点需求就好了,不至于要改一堆的东西。

子类说:我们拥有了父亲的东西了,真爽!!不过我们子类肯定是比父亲更强大的,因为我们继承了他的东西,但是又自己添加了其他功能,肯定更强大)

二、继承前后关系图

没有继承之前对象和类

二、 有继承后的关系:(大类把公共部分分裂出来,定义成父类,子类继承后又新增其他功能)

实际开发中是一个子类被很多个对象new使用

三、形象语法

class 父类 {

 ......//成员变量、成员方法

}

class 子类 extends 父类{

 ......//成员变量、成员方法

}

代码例子(对应上图):

(演示代码为了简便好看就不生成构造器了,开发中还是要生成构造器的)

定义了一个"人"类(person),他是父类。还有定义了一个"子"类(boy),他是子类。还定义了一个对象new他们执行


父类:(父类有自己的成员变量和方法)

package three;
//父类,人类
public class person {
    public int money = 999999;//这是父类的公开成员变量
    public void say(){//这是父类的方法
        System.out.println("我是父亲");
    }
}

子类:(子类通过extends继承了父类的全部方法还有公共成员变量,还带有自己的成员变量和方法)

package three;
//子类,Boy
public class Boy extends person{//这个子类boy通过extends继承父类person,这个子类里面已经带有父类的方法和成员变量了
public void b(){//子类自己的方法
    System.out.println("我是儿子");
    }
}

测试代码

package three;
//这是一个实现类的对象
public class 对象 {
    public static void main(String[] args) {
        Boy boy = new Boy();//new调用子类Boy
        boy.b();//通过子类调用他自己的方法,我是儿子
        boy.say();//通过子类调用了父亲的say方法,我是父亲
        System.out.println(boy.money);//通过子类调用了父亲的成员变量,999999
    }
}

运行结果:

我是儿子

我是父亲

999999

四、查看类和类继承之间的快捷键:

1.光标放在要查看的类里面



2.Ctrl+H键


五、super

为什么要用super?(详细超链接)

答案:因为super可以解决父类和子类之间方法重名,具体去调用谁的问题?被super点到的就是调用父类的了

注意事项:

1.super是只能在继承条件下才能使用

2.super调用父类的构造方法,必须在构造方法的第一个

3.super只能出现在子类的方法和构造方法中

六、重写

为什么要重写?(详情超链接)

答案:因为父类的一些功能,子类不一定需要,或者不一定满足

重写即:子类的方法和父类的方法必须要一致;方法体不同!

七、注意事项:

1.需要有继承关系,子类重写父类方法!

2.方法名必须相同,参数列表必须相同

3.修饰符:可以扩大,不能缩小:public>protected>Default>private

4.抛出的异常:范围可以缩小,不能扩大:classNotFoundException-->Excepton(大)

题外话:

super就是子类和父类里面出现相同的名字了,不知道调用谁了,有super就是来解决的,直接在子类里面指向的就是父类,不考虑远近。

重写嘛,无非就是儿子子类对父亲类的一些方法不满意,但是又不好直接说,就直接搞出来方法名和参数名都一模一样的,但是方法里面的实际东西就是不一样了。这叫什么?这叫人情世故。

继承直白理解:子类A和子类B:父亲你帮我们房间放着相同的东西吧,我们自己本身就不带那么多东西了,放你那边,我们子类这边也简洁,反正想要从你那边可以随时拿就好。这些子类们,就想着继承使用父亲的东西,还放到父亲类那边,自己这边就图简洁一点是吧,轻装上阵被对象调用是吧

目录
相关文章
|
1月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
25 1
|
2月前
|
Java
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
130 1
|
2月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
26 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
2月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
45 2
|
3月前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
41 3
|
3月前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
69 2
|
3月前
|
Java
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
45 2
|
8月前
|
搜索推荐 Java
Java的面向对象特性主要包括封装、继承和多态
【4月更文挑战第5天】Java的面向对象特性主要包括封装、继承和多态
57 3
|
7月前
|
Java 开发者
Java 面向对象新视界:揭秘子类如何“继承”父类精华,再添“创新”之笔
【6月更文挑战第16天】在Java的面向对象世界,子类继承父类的特性,如`Circle`继承`Shape`,展示“is-a”关系。子类不仅保留父类的`color`和`display`方法,还添加了`radius`属性及定制的显示逻辑。这种继承与创新允许代码复用,增强灵活性和可扩展性,使得构建复杂系统变得更加高效和模块化。通过持续的继承与定制,开发者能构建出一系列独具特色的类,充分展现面向对象编程的力量。
159 57
|
6月前
|
Java 编译器
Java面向对象(三)详解: 封装 | 继承 | 方法重写 | 抽象类
Java面向对象(三)详解: 封装 | 继承 | 方法重写 | 抽象类