众所周知,Java是一门面向对象的编程语言。今天,我来分享一下我对于java面向对象学习的总结。
何为面向对象
面向对象是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在"对象"概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而类的继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
面向对象的特征
1-封装:
封装是一种信息隐蔽技术,它体现于类的说明,使数据更安全.是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。
封装的优点:
1>提高代码的安全性、复用性
2>“高内聚,低耦合”的特点:
高内聚即是,细节封装,便于修改代码,提高可维护性;低耦合即是,简化外部调用,便于扩展协作
访问控制符:
修饰符 | 同一个类 | 同一个包中 | 子类 | 所有类 |
private | * | |||
default | * | * | ||
protected | * | * | * | |
public | * | * | * | * |
1>private 表示私有,只有自己类能访问
2>default 表示没有修饰符修饰,只有同一个包的类能访问
3>protected 表示可以被同一个包的类以及其他包中的子类访问
4>public 表示可以被该项目的所有包中的所有类访问
类属性的处理:
1>一般使用private访问权限。
2>提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值与读取操作(注意:boolean变量的get方法是is开头!)。
3>一些只用于本类的辅助性方法可以用private修饰,希望其他类调用的方法用public修饰。
2-继承:
继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。
继承要点:
1>在代码中,用extends实现继承,如
class Student extends Person{
....
}
2>Java中类只有单继承,而接口有多继承
3>子类可以继承父类除构造方法外所有的属性和方法,但并非所有属性和方法都能直接访问(如:父类私有的属性和方法)
4>如果一个类没有调用extends,默认继承Java.lang.Odject
3-多态:
对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。
多态要点:
1>多态是方法的多态,不是属性的多态(多态与属性无关)
2>多态存在的三个必要条件:继承、方法重写、父类引用调用子类对象
3>父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了
方法的重写(override):
子类重写父类方法,用自身行为替换父类行为
方法重写的要点:
1>"==" 方法名、形参列表相同
2>"<=" 返回值类型和声明异常类型,子类小于等于父类
3>">=" 访问权限,子类大于等于父类
对象转型:
1>向上转型:父类引用指向子类对象,我们将这个过程称为向上转型,属于自动转型
2>向下转型:向上转型后的父类引用变量只能调用它编译类型的方法,不能调用它运行时类型的方法。这时,我们就需要进行类型的强制转换,我们称之为向下转型!