java中的继承

目录

java继承

1.父类

复制代码
public class Person {
    public Double height;
    public String name;
    public char sex;
    public void run(){
        System.out.println("任何人都可以跑");
    }
    public void a(){
        System.out.println("...........");
    }
}

2.子类-------继承父类:子类 extends 父类

复制代码
public class Student extends Person{//继承person
    public void study(){
        System.out.println("学生学习");
    }
}

3.继承的本质

继承的本质就是代码的复用,(子类复用父类的代码)子类可以使用父类已经写好的代码,子类就不需要重新写了,而父类是不能使用子类的代码的

复制代码
public static void main(String[] args) {
    Student student = new Student();
    student.run();

    // 继承的本质就是代码的复用,子类可以使用父类已经写好的代码,子类就不需要重新写了
    Person person = new Person();
    person.study();

    // 父类是不能使用子类的代码的
}

4.java的继承层次是不能互相继承的

5.一个类可以被多个类当成父类,一个子类只能有一个父类(java仅支持单继承):

6. 继承的实现

在 Java 中,继承是通过extends关键字来实现的。子类继承父类的语法如下:

复制代码
class 子类名 extends 父类名 {
    // 子类的属性和方法
}

7. 构造方法的继承

子类可以继承父类的构造方法,但不能直接调用父类的构造方法。如果需要在子类中调用父类的构造方法,可以使用super关键字。例如:

复制代码
public class Student extends Person {
    public Student(String name, double height, char sex) {
        super(name, height, sex); // 调用父类的构造方法
    }
    // 子类的其他方法
}

8. 方法的重写(Override)

子类可以重写父类的方法,以实现自己的特定行为。重写方法时,需要满足以下条件:

  • 方法名和参数列表必须与父类中被重写的方法相同。
  • 子类方法的返回类型必须与父类中被重写的方法的返回类型相同或为其子类。
  • 子类方法的访问修饰符必须大于或等于父类中被重写的方法的访问修饰符。

例如:

复制代码
public class Student extends Person {
    @Override
    public void run() {
        System.out.println("学生可以跑得更快"); // 重写父类的run方法
    }
    // 子类的其他方法
}

9. 访问修饰符与继承

在 Java 中,访问修饰符决定了类、方法和属性的可见性。在继承中,访问修饰符的作用如下:

  • public:可以被任何类访问。
  • protected:可以被同一个包中的类访问,也可以被不同包中的子类访问。
  • default(没有显式指定访问修饰符):可以被同一个包中的类访问。
  • private:只能被当前类访问。

当子类继承父类时,子类可以访问父类中声明为public和protected的成员,但不能访问声明为private的成员。

10. 继承的限制

虽然继承提供了代码复用的便利,但也有一些限制:

  • Java 不支持多重继承,即一个子类只能有一个父类。
  • 继承可能导致类之间的耦合度增加,使得代码维护变得困难。
  • 过度使用继承可能导致代码的可读性和可维护性下降。

因此,在设计类时,应该合理使用继承,避免不必要的继承层次。

相关推荐
Joy T1 小时前
Agent 确定性上下文设计:从 Prompt 参数注入到能力分层
java·开发语言·微服务·架构·prompt·agent context
m0_587383004 小时前
广州 24 小时自助健身房解决方案技术实现与实战指南
java·spring·小程序·架构·需求分析
·云扬·4 小时前
Prompt 工程与安全:从 System 设计到注入防御
java·人工智能·安全·ai·prompt
专注仿真4 小时前
引擎扩展性与集成设计深度剖析:从 14 个扩展点到 DIS→HLA 演进之路
开发语言·算法·仿真引擎·推演引擎
Best-Wishes5 小时前
科来网络分析系统(技术交流版)使用说明书
开发语言·junit·php
代码不停5 小时前
自动化测试(java)
java·开发语言·selenium·自动化
鬼手点金7 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
爱上网的小舟7 小时前
星际战士2启动错误怎么办?5种游戏报错解决方法
开发语言·php
paopaokaka_luck8 小时前
滑雪场管理系统(AI智能助手流式对话,ECharts 运营数据分析、教练、雪具与场地一体化预约,钱包支付退款、订单核销与服务评价)
java·人工智能·spring boot·网络协议·数据分析·echarts
阿里嘎多学长8 小时前
2026-10-12 GitHub 热点项目精选
开发语言·程序员·github·代码托管