Java中的封装,继承和多态

封装

1.什么是封装?
在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装的步骤:
1.修改属性的可见性不限制对属性的访问(一般为private)。
2.提供公有的get和set方法和set方法,在方法体进行合理值的判断,使用public关键字修饰。
3.在构造方法中使用set方法进行合理值的判断。
在这里插入图片描述
2.包结构:
在开发大型项目时,会有很多功能模块的具体划分,这是需要建立很多的类,将同一层级的类放在一个包中,可使程序的层级结构清晰,提高辨识度。类似于在资源管理器中新建一个文件夹,有规律的存放和管理资源文件。
在这里插入图片描述
3.访问修饰符
下图中:受保护的情况(protected) :子类必须在同一个包中。
在这里插入图片描述
1.类的访问修饰符:
Public:对外公开
默认:所在包有效,包以外不能访问 --体现在构造方法上

2.成员访问修饰符(成员属性和成员方法
Public:对外公开
Protected:受保护的,同一个包的子类可以访问。
默认:同一个包中可以访问
Private:只在当前类有效

4.static和this关键字

Static修饰的,属于类范围的,this代表当前对象。
Static修饰成员属性和方法和代码块

继承

如何理解继承,我猜大家首先想到的可能是继承千万家产,走上人生巅峰。梦想是美好的,java里面却不是这样的。
本质:调用子类构造方法时会自动先调用父类构造方法,也就是说:创建子类对象,内存中有子类对象和父类对象extends关键字起的作用
Java中的继承需要从两个方面去理解
1.在多个子类中抽取出相同的属性和方法,形成父类的属性和方法
例如:大象和狮子 具有相同的属性,名称,体重,战斗力。可以提取这些相同的属性,形成一个父类 动物。

2.对父类成员的继承使用(包含成员属性和成员方法)
抽取出共有的重复的代码,使用继承,提高代码的复用性,让类与类之间产生关系:extends
继承是两个类之间产生关联关系的唯一的方式
子类构造方法会默认调用父类构造方法。
为多态提供了前提

Java中支持单继承:一个子类只能有一个直接父类
Java中不支持多继承

1.this和super的区别:

this:
1.本类成员方法中,访问本类成员变量,访问本类另一个成员方法
2.本类构造方法中,访问本类另一个构造方法

super:
1.在子类成员方法中,访问父类成员变量和成员方法
2.在子类构造方法中,访问父类构造方法

本类的成员变量和局部变量重名,用this区分。
本类的成员变量和父类的变量重名,用super区分。

2.重写(覆盖)和重载

重载 : 同一个类中,方法名相同方法参数不同,典型应用:无参构造和有参构造

重写:子类覆盖父类同名方法:参数也要相同,返回值也要相同,
访问权限只能大于等于父类方法的权限
优点:功能的扩展。
缺点:父类中被覆盖的方法不可能被执行,功能的丢失。
风险:在被子类继承的过程中,方法容易被恶意覆盖

预防风险
1.用final修饰类,该类不能被继承。
2.用final修饰方法,该方法不能被重写

子类方法和父类方法同名,子类方法会覆盖父类方法,称为重写(覆盖),前提,子类方法访问权限必须大于或等于父类方法的访问权限
什么时候会用到覆盖?
案例:手机需要扩展新功能,反复修改代码会带来毁灭性的灾难。此时采用继承是不错的选择

3.Final
修饰的变量称为常量,值不能被修改
修饰的方法不能被重写,保证安全性和稳定性
修饰的类不能被继承,避免功能被覆盖。

要想让一个类不被其它类继承:
1.用final修饰
2.构造方法私有化

要点
1.如果一个类没有显示继承父类,它默认继承Object
2.静态方法可以被继承,但是不能被重写

多态

**1.什么是多态?**多态是同一个行为具有多个不同表现形式或形态的能力。也就是把子类的实例化对象赋值给父类的引用类型

多态:多种状态 多态=继承+重写

instance of:对象 instance of 类。
instance of:通过返回一个布尔值来指出,这个对象是否是这个特定类或者它的子类的一个实例

多态的优点:

  1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。//继承
  2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。 //多态的真正作用,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值