继承、多态

Java继承与多态详解
本文详细介绍了Java中的继承机制,包括继承的好处与坏处、继承的特点、成员变量及方法的访问规则等,并深入探讨了多态的概念、实现条件、成员访问特点及其优缺点。


1、继承

1_1、属性  行为  构造方法

(1)、将多个类中相同的属性以及行为提取到另外一个类中,然后让这些类去继承另外一个类,从就拥有了这个类当中的属性以及行为

class A  extends B{}

(2)、A 继承了 B  B是A的父类 A是B的子类

1_2、继承的好坏处

A、好处:提高了代码的复用性,维护性,多态的前提。

B、坏处:提高了耦合性---开发原则 高内聚低耦合

1_3、继承的特点

A、java中继承只支持单继承,不支持多继承。一个类只能有一个爸爸

B、java支持多层继承

 

1_4、成员变量在继承中的访问特点

A、变量名相同:就近原则

B、变量名不同:用谁就是谁

 

1_5、super

A、this--代表本类对象的引用

B、Super

(1)、代表父类的存储空间(可以理解为父类的引用)

(2)、继承是类与类之间的关系,与最终创建的对象无关

(3)、super.属性  super.行为 super(....)

1_6、构造方法

A、不可以被继承

B、创建子类对象的时候  会先执行父类的构造方法--创建子类对象的时候  会先执行父类的构造方法

C、private修饰的成员变量--不能够被直接继承而不是不能继承

D、创建子类对象的时候 子类构造方法的第一行默认会有一个 super() 去调用父类的无参构造。注意  super(...)只能在子类构造方法的第一行

 

1_7、成员方法

A、子类中有用子类的

B、子类中没有找父类要

C、父类中也没有报错

1_8、方法重写注意事项

A、private修饰的方法不能够被重写

B、重写的方法的权限不能低于被重写的方法的权限

C、Public-->默认的权限  不写权限修饰符  就是默认的--default--->private

1_9、属性

A、就近原则

B、private修饰的属性不能够直接被继承。需要通过get与set访问

1_10、行为

A、重写

B、private修饰的方法不可以被重写

C、重写的方法权限不能小于被重写的方法

1_11、构造方法

A、不能够被继承

B、创建子类对象的时候,会先走父类的构造方法。用来初始化父类。

1_12、super

A、super.属性 super.方法 super(....)

 

2、多态

2_1、前提:有继承关系

2_2、格式:父类类型 对象名 = new 子类类型();

2_3、成员访问特点

A、属性---编译看左边 运行看左边

B、方法---编译看左边 运行看右边

2_4、好坏处

A、提高了扩展性

B、消除了不同子类之间的差异性,编写出通用代码,提高了代码的适用性。

C、具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作。

D、弊端---不能使用子类中特有的方法

 

2_5、向上转型

A、父类引用指向子类对象

2_6、向下转型

A、父子引用转成子类对象

B、不要瞎转,他原先是谁你才能转成谁

C、比如  动物 安倍 = new 狗();  你可以将 安倍强转成狗类的对象  因为  安倍就是狗 你不能将 安培强转成人

D、向下转型之前  这个对象肯定发生过向上的转型

E、ClassCastException 类型转换异常

F、通过向下转型  我们可以使用子类中特有的成员方法

### 面向对象编程中的继承 继承是面向对象编程的重要机制,允许新类从现有类派生属性和行为。这不仅提升了代码的可重用性,还帮助构建清晰的层次结构[^4]。 #### Python 中的继承示例 ```python class Animal: def __init__(self, name): self.name = name def speak(self): raise NotImplementedError("Subclasses must implement this method") class Dog(Animal): # 继承自 Animal 类 def speak(self): return f"{self.name} says Woof!" class Cat(Animal): # 同样继承自 Animal 类 def speak(self): return f"{self.name} says Meow!" ``` ### 多态的概念及其重要性 多态意味着同一操作作用于不同类型的对象上会呈现出不同的行为形式。这种灵活性使得程序更加通用且易于扩展[^1]。 在上述例子中,尽管 `Dog` 和 `Cat` 是两个完全不同的动物种类,但它们都实现了来自基类 `Animal` 的 `speak()` 方法。这意味着我们可以编写如下代码: ```python def animal_sound(animal): print(animal.speak()) dog = Dog('Buddy') cat = Cat('Whiskers') animal_sound(dog) # 输出: Buddy says Woof! animal_sound(cat) # 输出: Whiskers says Meow! ``` 这里的关键在于即使不知道传入的是哪种具体的动物实例,只要该实例属于 `Animal` 或其任何子类,就能调用 `.speak()` 并获得适当的结果。这就是多态性的强大之处所在[^3]。 ### 实现多态的方式 - **方法重写**:当子类提供了一个与其类同名的方法时,则认为是在对该方法进行重写。这种方式让子类能够改变或增强类的行为。 - **方法重载**:虽然严格意义上讲 Python 不支持传统意义上的方法重载(即同一个类中有多个相同名称但参数列表不同的方法),但是可以通过默认参数值来模拟这一功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值