Java基础--面向对象高级(1)

什么是继承?继承的好处是?

  • 继承是类与类之间的一种父子关系,Java中提到的关键字extends,用于建立类与类之间的关系。

继承的好处

  • 可以把多个子类重复的代码提取到父类中,提高代码的复用性。
  • 子类可以在父类的基础上增加其他功能使其更强大。
  • (tips:父类继承的属性如name在Idea中时普通字体,而子类特有 的属性用了加粗字体)

继承的特点

  • Java只支持单继承 ,不支持多继承 ,但支持多层继承(父类和间接父类)。
  • 顶级父类:Object -> 祖宗 所有类都默认继承Object,由虚拟机自动执行;

继承中成员的特点

1. 成员变量的特点

查找顺序:就近原则

2. 成员方法的特点

查找顺序:就近原则

书写规则: 多个子类共性的成员方法抽取到父类中

方法的重写

  • 在子类中,把父亲的方法再写一遍,方法申明保持一致;
  • 使用场景: 如果父类的方法不能满足子类的要求了,子类中可以把该方法再重写一遍;

下图中: 由第二代跃迁到第三代手机中,打电话升级了视频通话; 方法不能满足子类的要求 了,需要**重写; **

下面为重写的演示:

  • 第三代重写了第一代的call方法 --- @Override
js 复制代码
public class FisrstPhone {
    public void call() {
        System.out.println("打电话");
    }
}
js 复制代码
public class ThirdPhone extends SecondPhone {
    @Override //注解,表示重写父类的方法,必须有,给虚拟机看的;
    public void call() {
        System.out.println("打视频");
    }
}

注意事项:

  • 重写方法的名称 、形参列表 必须和父类中的一致,方法体按照实际需求书写;
  • 建议: 重写的方法申明和父类保持一致即可;
  • final修饰的类为最终类,里面的方法不能被重写; (修饰类不能被继承、修饰方法不能被重写)
  • private私有方法、static静态方法、final最终方法不能被重写;
js 复制代码
public class Unkown {
    final class Fu {

    }

    class Zi extends Fu {   //报错

    }
}

3. 构造方法的特点

在给子类赋值时,由于子类的成员变量是继承于父类,所以会通过super传给父类 进行赋值;

标准的继承构造方法:

  • 先执行父类的带参构造,再执行子类的带参构造;

this与super关键字

构造方法:

给成员变量一个默认值:

  • 创建对象调用空参构造,空参构造通过this()调用本类的有参构造、给成员变量赋值;
  • 如果子类有多个构造方法的时候,不能用this()互相调用(死循环),预留一个调用父类的构造方法(super)
  • 构造方法中如果有this(),就不能有super(),JVM不会自动添加super();
相关推荐
乌暮13 分钟前
请求进门先安检:Spring 拦截器与统一功能实战指南
java·开发语言·后端·学习·spring
学长毕设20 分钟前
基于SpringBoot的烘焙商品商品系统-附源码
java·spring boot·后端
付威202344 分钟前
Durable Execution 怎样设计:从运行记录到中断恢复
后端
LHICOD2 小时前
Linux-2
java·linux·后端·jar·vmware·svm·vm
小杨互联网2 小时前
Go 现代 CLI 工具离线镜像合集
开发语言·后端·golang·开源·go·命令行
lazy H2 小时前
【计算机网络】第 15 篇:Java BIO、NIO 与高并发网络通信——从 Socket 理解 I/O 模型
网络·后端·tcp/ip·计算机网络·nio·408
geovindu3 小时前
rust: Semaphore Pattern
开发语言·后端·设计模式·rust·代理模式·企业级信号量模式·同步型模式
Thneonl4 小时前
Claude Code 频繁 Compacting?发布次日我根治了 2 个痛点
后端·rust
环境栈笔记6 小时前
指纹浏览器安卓怎么用?从运行位置到功能验收,先把三种方案分清
前端·人工智能·后端·自动化
小小张说故事6 小时前
Python 的 list 为什么能装下任何类型?拆开 PyObject* 数组,以及它让你多付了多少内存
后端·python