From 107648bb185ed1c9574df2e638726b35abd843f5 Mon Sep 17 00:00:00 2001 From: danny <12793148@qq.com> Date: Sun, 12 Mar 2023 15:50:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03:类与对象/04.md | 202 ++++++++++++++++-- .../img/image-20230312150607935.png | Bin 0 -> 37263 bytes 2 files changed, 189 insertions(+), 13 deletions(-) create mode 100644 03:类与对象/img/image-20230312150607935.png diff --git a/03:类与对象/04.md b/03:类与对象/04.md index 30e8bce..94037d8 100644 --- a/03:类与对象/04.md +++ b/03:类与对象/04.md @@ -372,59 +372,235 @@ main函数开起来比较奇怪,为什么在Faculty内中,又使用new 方 ``` +可以看到,这是典型的函数调用栈的方式:最先进入的函数最后退出。其实PPP类还隐式调用了Object(),会在Object小节讲解。 +## 3. Overriding 覆盖父类的方法 +在很多时候,子类型可能需要改变父类型的一些行为(函数),这时子类型可以定义一个与父类型一样的函数,但是实现不一样,这样父类型的实现就被隐藏了。 +### 3.1. 继承父类型的函数 -## 3. Overriding 覆盖父类的方法 +先来看看子类型继承父类型,拥有父类型的全部能力的情况: + +```java +class Fruit { + public String toString() { + return "This is fruit."; + } +} + +class Apple extends Fruit { + +} + +public class Test { + public static void main(String[] args) { + Apple apple = new Apple(); + System.out.println(apple.toString()); // 输出:This is fruit. + } +} +``` + +Apple中没有toString()函数,但是其父类型后,因此Apple也得到了这样的能力。其实是间接调用父类型的toString()函数。 + +### 3.2. 覆盖父类型的函数 + +如果在Apple中也定义一个toString()函数会有什么样的结果? + +```java +class Fruit { + public String toString() { + return "This is fruit."; + } +} + +class Apple extends Fruit { + public String toString() { + return "This is an apple."; + } +} + +public class Test { + public static void main(String[] args) { + Apple apple = new Apple(); + System.out.println(apple.toString()); // 输出:This is an apple. + } +} +``` + +Apple类型中的 toString() 函数覆盖了父类型的同名函数,这样的方式叫做 override。在Apple类型的对象上面调用toString()会出现Apple类自己toString()函数的行为,而不会调用Fruit类型的toString()。换句话说,子类型如果定义了和父类型一样的函数,父类型的这个同名函数将不可见。 + +### 3.3. 使用super关键字调用父类型被隐藏的函数 + +子类如果覆盖了父类的某个函数,但是在子类中(只能在直接子类中)任然有办法调用父类被隐藏的函数。 + +```java +class Fruit { + public String toString() { + return "This is fruit."; + } +} + +class Apple extends Fruit { + public String toString() { + return super.toString() + "\nThis is an apple."; + } + + public void printFruitToString() { + System.out.println(super.toString()); + } +} + +public class Test { + public static void main(String[] args) { + Apple apple = new Apple(); + System.out.println(apple.toString()); + apple.printFruitToString(); + } +} +``` + +结果是: + +``` +This is fruit. +This is an apple. +This is fruit. +``` + +1、2行输出是`System.out.println(apple.toString());` 的结果。可以看到第1行是Apple类中`toString()`函数使用`super.toString()`调用了Fruit类中`toString`的结果。第3行使用Apple的函数`printFruitToString()`,本质也是使用了`super.toString()`。 + +**注意:super关键字只能在直接子类中使用,表示其直接父类。** + +### 3.4. Overriding vs. Overloading + +> An instance method can be overridden only if it is accessible. Thus a private method cannot be overridden, because it is not accessible outside its own class. If a method defined in a subclass is private in its superclass, the two methods are completely unrelated. +> +> (了解)实例函数在子类中可以访问的情况下才可以被覆盖。如果父类中有一个私有函数,子类中定义了一个函数(与父类函数名,参数都一样),那么这两个函数没有任何关系。 +> +> Like an instance method, a static method can be inherited. However, a static method cannot be overridden. If a static method defined in the superclass is redefined in a subclass, the method defined in the superclass is hidden. +> +> (了解)和实例函数一样,静态函数可以被子类继承;但是静态函数不能被覆盖;如果子类型重新定义了父类型的静态函数,父类型的静态函数将被一直隐藏。 + +![image-20230312150607935](img/image-20230312150607935.png) + +覆盖(Overriding):只在父类型函数和字类型函数一样的情况下出现; + +重载(Overloading):函数签名不一样 + +上图中左边是覆盖,右边是重载。 + +## 4. Object类 + +如果在定义的时候不使用关键字(extends)指定父类,那么默认其父类是Object。也就是说,所有的引用类型都是从Object直接或者是间接继承(扩展)而来的。 + +```java +class Fruit{ + +} +// 与下面是一样的 +class Fruit extends Object{ + +} +``` + +### 4.1. toString方法 +这样以来,所有引用类型都具备Object所具备的所有能力,最常用的就是toString()方法。 +toString()方法是在Object中定义的方法,会打印一个该对象的描述。表述的大约格式是:类名@对象地址 -## 4. Overriding vs. Overloading +```java +class Fruit{ + +} +public class Test { + public static void main(String[] args) { + Fruit fruit = new Fruit(); + System.out.println(fruit.toString()); + } +} +``` +试试上面的例子。 -## 5. Object类 +## 5. Polymorphism多态 +> Polymorphism means that a variable of a supertype can refer to a subtype object. +> +> 多态是指直接或者间接的父类型引用变量可以用来引用字类型的对象。很难理解,有什么用? +> +> A class defines a type. A type defined by a subclass is called a subtype, and a type defined by its superclass is called a supertype. Therefore, you can say that Circle is a subtype of GeometricObject and GeometricObject is a supertype for Circle. +> +> 上面是说父类型和字类型的关系。例如借用本章开头的分类图:猫种可以说成是属于猫属、猫科、食肉动物目。。。就是这意思,这有什么用? +我们先来看看一个例子: -### 5.1. toString方法 +```java +class Fruit { + public String toString() { + return "This is fruit."; + } +} +class Apple extends Fruit { + public String toString() { + return "This is an apple."; + } +} +class Orange extends Fruit { + public String toString() { + return "This is an orange."; + } +} -## 6. Polymorphism多态 +public class Test { + public static void main(String[] args) { + Apple apple = new Apple(); + Orange orange = new Orange(); + printInfo(apple); + printInfo(orange); + } + + static void printInfo(Fruit fruit) { + System.out.println(fruit.toString()); + } +} +``` -### 6.1. 动态函数绑定 +### 5.1. 动态函数绑定 -## 7. 引用类型的类型转换 +## 6. 引用类型的类型转换 -### 7.1. 子类型转换成父类型 +### 6.1. 子类型转换成父类型 -### 7.2. 父类型转换成子类型 +### 6.2. 父类型转换成子类型 -## 8. equals 方法 +## 7. equals 方法 -## 9. ArrayList类 +## 8. ArrayList类 -## 10. protected 访问修饰 +## 9. protected 访问修饰 -## 11. final 修饰 +## 10. final 修饰 diff --git a/03:类与对象/img/image-20230312150607935.png b/03:类与对象/img/image-20230312150607935.png new file mode 100644 index 0000000000000000000000000000000000000000..2d8186ca88446ba4fcb1dafa86f55bdbee9390f9 GIT binary patch literal 37263 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%0Dbj(96C*FrxnXyp!uSiV+8ybxAut-;d4KyE%|sxi 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