面向对象基础
名词
面向对象编程(Object-Oriented Programming)
对象:对象是一个自包含的实体,用一组可识别的特性和行为来标识
类:类就是具有相同的属性和功能的对象的抽象的集合。如果对外提供的方法需要用“public”修饰符
实例:实例就是一个真实的对象。实例化是创建对象的过程,使用new关键字来创建
构造方法:又叫构造函数,其实就是对类进行初始化。构造方法与类同名,无返回值,也不需要void,在new时候调用。
所有类都有构造方法,如果你不编码则系统默认生成空的构造方法,若你有定义的构造方法,那么默认的构造方法就会失效了
构造方法不能继承,只能被调用
方法重载:方法重载提供了创建同名的多个方法的能力(名字必须一致),但这些方法需要使用不同的参数类型(参数个数不同或参数类型不同),方法重载提供了函数扩展的功能,方法重载可以在不改变原方法的基础上,新增功能。
封装:每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作
好处:
1、良好的封装减少耦合
2、类内部的实现可以自由的修改
3、类具有清晰的对外接口
继承:对象继承代表了一种“is-a”的关系,如果两个对象A和B,可以描述为“B”是“A”,则表明B可以继承A
继承还可以理解成:是对被继承者特殊化,因为它除了具备被继承者特性外,还具备自己独有的个性
如果子类继承父类,1、子类拥有父类private的属性和功能;2、子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;3、子类还可以以自己的方式实现父类的功能(方法重写)
子类可以继承父类的方法、属性、字段等。
继承的优点:
继承使所有子类公共的部分都放在父类,使得代码得到了共享,这就避免了重复,另外,继承可使得修改或扩展继承而来的实现都较为容易。
继承的缺点:
父类变,则子类不得不变,继承会破坏包装,父类实现细节暴露给子类,使两个类强耦合
多态:多态表示不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行
多态原理是当方法被调用时,无论对象是否被转换为其父类,都只有位于对象继承链末端的方法实现会被调用。也就是说,虚方法是按照其运行时类型而非编译时类型进行动态绑定调用的
抽象类
1、抽象类不能被实例化;2、抽象方法是必须被子类重写的方法;3、如果类中包含抽象方法,那么类必须定义为抽象类,不论是否还包含其他一般的方法
接口:
接口是把隐式公共方法和属性结合起来,以封装特定功能的一个集合。一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。接口不能实例化,不能有构造方法和字段
一个类可以支持多个接口,多个类也可以支持相同的接口;实现接口的类必须要实现接口中的所有方法和属性
抽象类和接口的区别:
形态上的区分
1、抽象类可以给出一些成员的实现,接口却不包含成员的实现
2、抽象类和抽象成员可被子类部分实现,接口成员需要实现类完全实现
3、一个类只能继承一个抽象类,但可实现多个接口等等
思想上的区分
1、类是对对象的抽象;抽象类是对类的抽象;接口是对行为的抽象
2、如果行为跨越不同类的对象,可使用接口;对于一些类似的类对象,用继承抽象类
3、从设计的角度讲,抽象类是从子类中发现公共的东西,泛化出父类,然后子类继承父类,而接口根本不知道父类的存在,方法如何实现还不确认,预先定义

浙公网安备 33010602011771号