一.什么是封装
1.面向对象的三大特性:
封装、继承、多态。从一定角度上来看,封装和继承都是为多态准备的。
2.封装的定义:
保留有限的外部接口set和get,隐藏具体实施细节。
3.封装的使用步骤:
(1)对访问属性进行私有化:private
(2)生成get和set方法,对外提供具体的方法。
4.封装的好处:
(1)便于使用者正确使用系统,防止错误修改属性。
(2)有助于系统之间的松耦合,提高系统的独立性。
(3)提高软件的可重用性。
(4)降低了构建大型系统的风险。
5.访问修饰符
修饰符\作用域 | 同一个类中 | 同一个包中 | 子类中 | 任何地方 |
---|---|---|---|---|
private | 可以 | 不可以 | 不可以 | 不可以 |
– | – | – | – | – |
默认修饰符 | 可以 | 可以 | 不可以 | 不可以 |
– | – | – | – | – |
protected | 可以 | 可以 | 可以 | 不可以 |
– | – | – | – | – |
public | 可以 | 可以 | 可以 | 可以 |
public class Demo01 {
private String name; //私有化成员变量
public String getName() { //get方法,用于输出
return name;
}
public void setName(String name) { // set方法,用于接收输入,并赋值
this.name = name;
}
}
二.什么是继承
1.继承定义
继承是一种类和类之间的包含关系,是使用已存在的类定义作为基础建立新类,新类不仅具有基类的属性和方法,而且还有其基类所没有的属性和方法。
2.继承中的this和super区别
this:
1.本类成员方法中,访问本类成员变量,访问本类另一个成员方法
2.本类构造方法中,访问本类另一个构造方法
Super:
1.在子类成员方法中,访问父类成员变量和成员方法
2.在子类构造方法中,访问父类构造方法
本类的成员变量和局部变量重名,用this区分,
本类的成员变量和父类的变量重名,用super区分
3.重写(覆盖)和重载
重载:同一个类中,方法名相同方法参数不同,典型应用:无参构造和有参构造
重写:子类和父类同名的方法。
子类方法和父类方法同名,子类方法会覆盖父类方法,称为重写(覆盖),前提,子类方法访问权限必须大于或等于父类方法的访问权限
4.final
修饰的变量称为常量,值不能被修改 修饰的方法不能被重写,保证安全性和稳定性 修饰的类不能被继承,避免功能被覆盖。
要想让一个类不被其它类继承:
1.用final修饰
2.构造方法私有化
三.什么是多态
1.多态概念
多态是同一个行为具有多个不同表现形式或形态的能力。
2.多态作用
简单讲就是解耦。再详细点讲就是,多态是设计模式的基础,不能说所有的设计模式都使用到了多态,但是23种中的很大一部分,都是基于多态的。
3.多态实现条件
1、有继承关系
2、子类重写父类方法
3、父类引用指向子类对象
4.多态转型
父类Father,子类Children
1、向上转型是自动的。即Father f = new Children()是自动的,不需要强转
2、向下转型要强转。即Children c = new Father()是无法编译通过的,必须要Father f = new Children();先向上转型成功后,在 Children c = (Children)f向下转型,让父类知道它要转成具体哪个子类
3、父类引用指向子类对象,子类重写了父类的方法,调用父类的方法,实际调用的是子类重写了的父类的该方法。即Father f = new Children(),f.toString()实际上调用的是Children中的toString()方法