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:只能被当前类访问。

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

10. 继承的限制

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

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

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

相关推荐
卑微的小鬼3 分钟前
Go 语言结合 Redis 实现固定窗口、滑动窗口、令牌桶和漏桶限流算法的示例代码
开发语言·redis·golang
ylfhpy16 分钟前
Python常见面试题的详解16
开发语言·python·面试
handsomestWei17 分钟前
java实现多图合成mp4和视频附件下载
java·开发语言·音视频·wutool·图片合成视频·视频附件下载
宝哥的菜鸟之路27 分钟前
Python 数据分析概述 ①
开发语言·python·数据分析
全栈若城27 分钟前
03 Python字符串与基础操作详解
java·开发语言·python
伯牙碎琴38 分钟前
二、Spring Framework基础:IoC(控制反转)和DI(依赖注入)
java·spring·log4j
菲力蒲LY41 分钟前
输入搜索、分组展示选项、下拉选取,全局跳转页,el-select 实现 —— 后端数据处理代码,抛砖引玉展思路
java·前端·mybatis
南宫生1 小时前
力扣每日一题【算法学习day.130】
java·学习·算法·leetcode
!!!5251 小时前
Java实现斗地主-做牌以及对牌排序
java·算法
我要最优解1 小时前
关于在mac中配置Java系统环境变量
java·flutter·macos