封装,继承,多态

封装

封装是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法,封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问

java的封装是通过控制访问级别来实现,java包含4类访问级别,按级别由低到高分别为:private(私有)、friendly(缺省)、protected(受保护)、public(公共)

注意:以上四种访问级别修饰符可以作用于任何变量和方法,类只可以定义为缺省(friendly)或公共(public)级别(嵌套类除外)

这里写图片描述

继承

继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力

换言之,就是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能

继承中,被继承的类称为父类(基类),继承类称为子类(派生类)

Java使用extends关键字实现继承, 语法如下:

class subClass extends superClass{

}

注意:Java是”单继承,多实现”,即一个类最多只能继承一个类,但是一个类可以实现多个接口(interface), 接口实现使用implements关键字(接口也可以继承接口)

class subClass implements interface 1, interface 2 .. interface n {

}

多态

定义:

多态是指允许不同类的对象(相同父类/基类)对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是方法调用)

换言之,就是同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针(java称为引用),来调用实现派生类中的方法

存在的必要条件:

  1. 要有继承/接口实现

  2. 要有重写/覆盖(Overriding)

  3. 父类引用指向子类

实现的技术:

实现多态的技术称为 动态绑定(dynamic binding),又叫 迟绑定,即是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法

不要把函数重载理解为多态,因为多态是一种运行期的行为,而不是编译期的行为

作用:

消除类型之间的耦合关系

多态的例子:

比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果

Overloading(重载) 和 Overriding(重写/覆盖)

重载

重载只依据方法的名称相同、参数列表不同,来定义方法是否重载。满足重载的条件:

参数类型不同

参数个数不同

参数顺序不同

和作用域无关

和返回类型无关

重写/覆盖

重写是基于继承的,没有继承,就没有重写,重写的实现是在子类中对从父类中继承过来的非私有方法的内容进行修改的一个动作。满足重写的条件:

子类和父类方法名相同,参数列表相同

子类的作用域权限,不得低于父类

子类的返回类型必须和父类一致

注意:静态static方法属于特殊情况,静态方法只能继承,不能重写Override,如果子类中定义了同名同形式的静态方法,它对父类方法只起到隐藏的作用。调用的时候引用指向谁,就调用谁的静态方法,参考链接:http://blog.youkuaiyun.com/zhouhong1026/article/details/19114589

封装继承多态是面向对象编程中的三个重要概念。 封装是指将数据和对数据的操作封装在一个类中,通过访问修饰符来控制对数据的访问权限。这样可以隐藏内部实现细节,提高代码的安全性和可维护性。\[2\] 继承是指一个类可以继承另一个类的属性和方法。通过继承,子类可以重用父类的代码,并且可以在子类中添加新的属性和方法。这样可以提高代码的复用性和可扩展性。\[2\] 多态是指同一个方法在不同的对象上可以有不同的行为。通过多态,可以实现方法的重写和重载,使得程序可以根据对象的实际类型来调用相应的方法。这样可以提高代码的灵活性和可扩展性。\[1\] 总结起来,封装继承多态是面向对象编程的三个基本特性,它们可以使代码更加模块化、可维护和可扩展。 #### 引用[.reference_title] - *1* *2* [封装继承多态](https://blog.youkuaiyun.com/yahid/article/details/125665027)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C++ 类的封装继承多态](https://blog.youkuaiyun.com/secondtonone1/article/details/124485035)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值