From 1e5f8eb33bc41cb59faf059e83701152785cabea Mon Sep 17 00:00:00 2001 From: yingyu5658 Date: Sat, 13 Dec 2025 08:33:08 +0800 Subject: Initial commit --- ...200\224\342\200\224\347\273\247\346\211\277.md" | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 "content/posts/Java\351\235\242\345\220\221\345\257\271\350\261\241\347\274\226\347\250\213\342\200\224\342\200\224\347\273\247\346\211\277.md" (limited to 'content/posts/Java面向对象编程——继承.md') diff --git "a/content/posts/Java\351\235\242\345\220\221\345\257\271\350\261\241\347\274\226\347\250\213\342\200\224\342\200\224\347\273\247\346\211\277.md" "b/content/posts/Java\351\235\242\345\220\221\345\257\271\350\261\241\347\274\226\347\250\213\342\200\224\342\200\224\347\273\247\346\211\277.md" new file mode 100644 index 0000000..04fae6c --- /dev/null +++ "b/content/posts/Java\351\235\242\345\220\221\345\257\271\350\261\241\347\274\226\347\250\213\342\200\224\342\200\224\347\273\247\346\211\277.md" @@ -0,0 +1,86 @@ +--- +CopyRight: true +NoCover: true +ShowReward: false +ShowToc: show +abbrlink: 850254895 +author: yingyu5658 +categories: +- 往昔 +cid: 185 +cover: images\2024\12\2743265221.jpg +date: "2025-01-10 13:19:11" +desc: null +keywords: null +layout: post +showTimeWarning: true +slug: 185 +status: publish +summaryContent: null +tags: +- Java +thumb: null +title: Java面向对象编程——继承 +updated: 2025/01/10 13:19:11 +--- + + +## 什么是继承 +- Java中提供了一个关键字``extends``,用这个关键字,可以让一个类和另一个类建立起父子关系。 +### 继承的特点 +- 子类能继承父类的非私有成员变量和成员方法。 +### 继承后对象的创建 +- 子类的对象是由子类、父类共同完成的。 + + + +## 继承相关的注意事项 + +### 权限修饰符 + +#### 什么是权限修饰符? +- 用来限制类中的成员(成员变量、成员方法、构造器、代码块...)能够被访问的范围 +### 权限修饰符有几种与各自的作用 + +| 修饰符 | 在本类中 | 同一个包下的其他类 | 任意包下的子类 | 任意包下的任意类 | +| --------- | ---- | --------- | ------- | -------- | +| private | √ | | | | +| 缺省 | √ | √ | | | +| protected | √ | √ | √ | | +| public | √ | √ | √ | √ | +provate < 缺省 < protected < public +## 单继承 + +Java是**继承**的,Java中的类**不支持多继承**,但是支持**多层继承**。 +## Object类 + +- Ojbect类是所有Java类的父类,任何类都是Object的子类。 +## 方法重写 + +### 什么是方法重写 + +- 当子类发现父类中的方法无法满足自己的需求时,**子类可以重写一个方法名称、参数列表一样的方法**去覆盖父类的这个方法,这就是方法重写。 +- 注意:方法重写后,方法的访问遵循**就近原则**。 +### 方法重写的注意事项 +- 重写时使用**Override注解**,他可以指定Java编译器,检查我们方法重写的格式是否正确,代码可读性也会更好。 +- 子类重写父类方法时,访问权限必须大于或等于父类该方法的权限(**public > protected > 缺省**)。 +- 重写的方法返回值类型,必须与被重写方法的返回值类型一样,或者范围更小。 +- 私有方法、静态方法不能被重写,如果重写会报错。 +### 方法重写在开发中的常见应用场景 +- 子类重写Object类的toString()方法,以便返回对象的内容。 +## 子类中访问其他成员的特点 + +1. 在子类方法中访问其他成员是按照就近原则的。 + - 先子类局部范围找。 + - 然后子类成员范围找。 + - 然后父类成员找 + - 然后父类成员范围找,如果父类范围还没有找到则报错。 + +2. 如果子父类中,出现了重名的成员,会优先使用子类的,如果此时一定要在子类中使用父类的方法怎么办? + - 可以通过`super`关键字,指定访问父类的成员:``super.父类成员变量/父类成员方法`` +## 子类构造器的特点 +- 子类的全部构造器,都会先调用父类的构造器,再执行自己。 + +### 子类构造器是如何实现调用父类构造器的: +- 默认情况下,子类全部构造器的第一行代码是`super();`(写不写都有),他会调用父类的无参数构造器。 +- 如果父类没有无参数构造器,我们必须在子类构造器的第一行手写`super();`,指定去调用父类的构造器。 -- cgit v1.2.3