当前位置:文档之家› 面向对象的三大特性

面向对象的三大特性

面向对象的三大特性
类:属性(变量)和方法
一、封装
1.定义:封装最简单的理解就是包装,指隐藏对象的属性和实现细节,仅仅对外公开接口,即对象的内部状态对外界是透明的。

2.原则:“该隐藏的一定要隐藏,该公开的一定要公开。


*对象的属性尽可能的私有,根据需要配上相应的get/set方法。

*对象的方法根据需要决定是否公开,公开的是声明,隐藏的是实现。

意义:使方法实现的改变对架构的影响最小化。

二、继承
1.定义:是一种由已存在的类型创建一个或多个子类型的机制.
2.父类到子类是从一般到特殊的关系。

*泛化:将不同子类中的共性抽象成父类的过程。

*特化:在原有父类的基础上加入一些个性的过程。

*原则:父类放共性,子类放个性。

3.继承的关键字:extends
4.Java 只支持单继承:一个类最多只有一个直接的父类。

*注:父子类之间的关系是树状关系,而多继承是网状关系。

5.父类中的私有属性可以继承但是不能访问,也可以说父类中的私有属性子类不能继承。

6. 访问权限:

| public 全部类可见
| protected本类可见,同包类可见,子类可见
| default 本类可见,同包类可见
| private 本类可见

private:本类内部可以访问,不能继承到子类。

*能否继承到子类?不能
default:本类内部可以访问,同包其他类也可以访问。

protected:本类内部可以访问,不同包的子类也可
以访问,同包其他类也可以访问。

*能否继承到子类?能继承到子类
public:任何地方都可以访问
*能否继承到子类?能继承到子类
7.方法覆盖(Override):
*方法名:相同
*参数表:相同
*访问限制符:相同或者更宽
*返回值类型:相同或者子类返回的类型是父类返回
的类型的子类(在JDK5.0 以后)
*抛出的异常:以后再说。

8.属性遮盖:属性不能够被覆盖。

9.super 关键字
*super()表示调用父类的构造方法。

*super()也和this 一样必须放在方法的第一句。

*super 可以屏蔽子类属性和父类属性重名时带来的属性遮盖,super. 表示调用父类的方法或属性。

*在子类的构造函数中如果没有指定调用父类的哪一个构造方法,那么就会调用父类的无参构造方法,即super()。

10.带继承关系的子类对象创建的过程
1)类加载,初始化静态属性(零值)和执行静态代码
块,顺序为:先父类后子类;
2)分配空间;
3)初始化属性(零值)和执行普通代码块;
4)调用本类的某一个构造方法(递归地构造父类对
象),顺序为:先父类后子类。

三、多态(美女、汽车)
1.定义:指引用变量拥有许多不同形式的能力
2.多态分为两种:编译时多态和运行时多态。

*编译时类型:主观概念,把它看作什么。

*运行时类型:客观概念,实际它是什么。

例:Animal a=new Dog();
指着狗问,这个动物是什么动物?
3.运行时多态的三原则:
*对象类型不变。

*只能对对象调用编译时类型中定义的方法。

*在程序的运行时,根据对象的运行时类型,找覆盖后的方法来调用。

(运行时动态类型绑定)
4. 强制类型转换: 一定没有新对象生成。

5. 关键字:instanceof
*用法:引用instanceof 类名判断这个引用所指向的
对象是否属于这个类。

*用在强制转换之前,避免类型转换异常。

if(d instanceof Dog){
Dog dog = (Dog)d;
}
3.多态的作用:多态可以屏蔽不同子类对象之间的差异,
写出通用的代码,做出通用的编程,以适应需求的不断变化。

静态:static
可以修饰属性,方法,语句块,内部类。

加了static 的属性和方法为所有对象所共享(提升到了类的级
别)。

只有加了static 的属性才是全局变量,使用类名. 来调用(推
荐),也可以使用对象.来调用。

静态的方法中不能使用非静态的属性。

静态的在类多次加载时只创建一次,非静态的在每次加载时都
创建一次。

Person p1=new Person();
Person p2=new Person();
类加载:
同类只加载一次
两个时刻1.创建对象时,即new();
2.用类调用方法时
类加载顺序:(先加载,后构造)先加载父类,后加载子类,
再构造
优先级:static 语句块>非static 语句块>构造器
(一般不使用语句块)
静态方法:
静态属性的作用:为所有对象所共享
静态方法的作用:可用类名. 调用
静态方法使用:1.可以用类名. 调用,也可以用对象. 调用2.不能使用非静态的属性
3.重写之前的方法是静态,重写之后也必须是静态
Final 关键字
1. final 类不能被继承
2. final 方法不能被重写
3. final 变量不能被改变
String,Math,System 是final 的
在类中如果有final 属性,则必须对其显式初始化(可直接赋值,可在构造器中赋值,不能在方法中赋值;只能赋值一次)Static 与final 的区别:
Static 的作用:共享一个东西
Final 的作用:不可修改(针对对象)
工具型的方法一般为static
封装的好处:1.属性保护
2.代码维护
继承的好处:1.代码复用
2.代码维护
继承与重写结合的好处:1.定标准
2.各自实现
多态的好处:1.参数传递灵活
2.参数传递简洁
3.定标准
重载的好处:便于用户使用。

相关主题