首页 > 代码库 > Java 封装 继承 多态
Java 封装 继承 多态
一、 封装
a) 概念:装进去,封起来
b) 作用:方便、安全
- 方便:调用(一处编写,N处调用),修改(一处修改,处处响应)。
- 安全:数据安全(将属性私有化,提供共有方法,可以在方法中验证传参的有效性,合法性),访问安全(通过包或访问修饰符,限制类或属性或方法的访问级别,只让需要知道的地方知道)
1.1、 构造方法
a) 定义:负责对象初始化任务,通常用来给属性赋值的。
b) 特点:与类同名,没有返回类型,系统默认会提供无参构造方法。
Dog dog = new Dog();
c) 变量的作用域(成员变量和局部变量同名):就近原则。所以为了区分同名成员变量和局部变量,引入了关键字this,this是指当前对象。
this(参数列表) 类内访问构造方法
必须位于其他构造方法的第一句话。
d) 如果我们为类写了有参构造,那么系统将不再提供无参构造。
e) 构造方法重载:
构造方法的参数列表不同:(参数列表的类型,数量,顺序不同)
和访问修饰符与返回类型无关
二、 继承
a) 概念:一种在不需要编写任何当前类代码的情况下,完成当前类功能扩展的能力。
b) 分类:实现继承(如概念),抽象继承,可视继承
- 抽象类,接口
- Form / JFrame (继承窗体的外观和编码能力)
c) 关系:
- Is a 继承
- Has a
- Like a( more than a)
d) 关键字:extends / implements
e) 访问修饰符(修饰属性或方法)
访问修饰符 |
类内 |
同包 |
子类(不同包) |
其他 |
修饰类 |
Private |
√ |
|
|
|
|
默认 |
√ |
√ |
|
|
√ |
Protected |
√ |
√ |
√ |
|
|
public |
√ |
√ |
√ |
√ |
√ |
2.1、 关键词this和super (访问构造方法,必须位于第一句。)
This:类内访问
Super:子类访问父类
2.2、 不能被继承的父类成员
a) 私有属性
b) 不在同包内的默认访问修饰符修饰的内容
c) 构造方法
2.3、 继承关系的不同类型代码的执行顺序
a) 父类静态代码块
b) 子类静态代码块
c) 父类普通代码块
d) 父类构造方法
e) 子类普通代码块
f) 子类构造方法
2.4、 子类重写父类方法,重写和重载的区别
a) 重写:子类重写父类同名,同参方法。访问修饰付子类>=父类与返回类型子类<=父类。
b) 重载:同一个类内同名,不同参方法。与访问修饰符和返回类型无关。
三、多态
a) 概念:一种类型(父类),多种表现(子类)
b) 类型:父类类型作为方法参数,父类类型作为方法返回值
c) 类型转换: 子类对象向父类类型转换:自动类型转换 :向上转型
父类对象向子类类型转换:强制类型转换 :向下转型
对象类型运算符:boolean flag = 对象 instanceof 类型;
四、 静态关键字static
a) 可以修饰:属性、方法和类
b) 被修饰的属性和方法称之为类属性和类方法,在该类的所有对象中共享。
c) 静态方法和静态代码块只能访问静态成员。非静态方法可以访问静态或非静态成员。
d) 1、静态代码块,2、普通代码块,3、构造方法,4、自定义方法
五、 final 和 abstract
a) 两者是矛盾的,对立的,不可以同时存在。
b) Final修饰的类不可以被继承,修饰的变量不可以修改值,修饰的方法不能被重写。
c) Abstract可以修饰类和方法,抽象方法只能存在于抽象类中,抽象类是可以被继承的,抽象方法必须被继承类实现。
d) String,Math类为final类
e) Object中的getClass(),wiat(),notify()等final方法
f) Object中的toString(),hashCode(),equals()等非final方法
g) 重写Object的toString()方法,在输出对象时,直接输入对象的toString()方法返回值。否则输出对象的内存地址。
h) 重写equals方法,只要所有的属性值都相等,则是同一个对象。
Java 封装 继承 多态