JAVA面向对象的三大特征
JAVA的三大特征---封装、继承、多态。
封装
封装的概念
封装指的就是将描述某种实体的数据和基于这些数据的操作集合到一起,形成一个封装体。
封装思想保证了类内部数据结构的完整性,使用户无法轻易直接操作类的内部数据,这样降低了对内部数据的影响,提高了程序的安全性和可维护性。
封装的好处
1.只能通过规定方法访问数据
2.隐藏类的实现细节
3.方便加入控制语句
4.方便修改实现
封装的使用
1.修改属性的可见性 --- 设为private
2.创建公有的getter/setter方法 --- 用于属性的读写
3.在getter/setter方法中加入属性控制语句 --- 对属性的合法性进行判断
This关键字
this关键字主要作用:
1.this调用本类中的属性,也就是类中的成员变量;
2.this调用本类中的其他方法;
3.this调用本类中的其他构造方法,调用时要放在构造方法的首行。
继承
继承的概念
继承就是子类继承父类的特征和行为,使得子类对象具有父类的实力域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承的使用
先编写一个父类,赋予属性;
再编写子类,使用extends关键字来继承父类.
注意! 子类只能继承一个父类 extends是继承关键字
继承的好处
继承机制是允许并鼓励类的重用的;
派生类也可以被继承,成为父类,即派生类既具有从父类中继承下来的属性和
行为,又具有自身新定义的属性和行为,当派生类又被它的子类所继承时,那么
它所继承的及自身所定义的属性和行为也被下一级子类所继承下去 ;
JAVA语言中只支持单继承,即一个子类只继承自一个父类;
JAVA语言中可以通过接口的方式来弥补由于不支持多继承而带来的子类不能使用多个父类的属性和行为所产生的不足。
子类访问父类成员
1.访问父类构造方法
使用super();可以访问父类无参构造方法
使用super(参数);可以访问父类有参的构造方法
2.访问父类属性
使用 super.属性; 可以访问到想要的属性
3.访问父类方法
使用 super.print(); 可以访问父类方法
注意 !super必须在子类构造方法中调用且必须是第一句,super不能访问父类的private成员
不能被继承的父类成员
1.private成员不能被继承
2.子类和父类不在同包,使用默认访问权限的成员
3.构造方法
多重继承关系初始化的顺序
父类属性 --->>父类构造方法--->> 子类属性 --->> 子类的构造方法
方法的重写
1.在子类中可以根据需要对从父类中继承来的方法进行重写。
2.重写的方法和被重写的方法名必须具有相同方法的名称、参数列表和返回类型。
3.重写方法不能使用比被重写的方法更严格的访问权限
多态
多态的概念
将父类对象应用于子类对象的特征就是面向对象编程中多态性的体现
多态指的就是在应用程序中出现的“重名”现象。多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类及其相关类。这样既降低了维护的难度,又节省了时间
使用多态实现思路
编写父类
编写子类,子类重写父类方法
运行时,使用父类的类型,子类的对象
实现多态的三个必要条件
继承
重写
父类引用指向子类对象
注意!构造方法因为不能被继承所以不能被重写
方法重写和方法重载
方法重写的规则:
1.方法名相同
2.参数列表相同
3.返回值类型相同或者是其子类
4.访问权限不能严于父类
重写和重载的区别
位置 | 方法名 | 参数表 | 返回值 | 访问修饰符 | |
方法重写 | 子类 | 相同 | 相同 | 相同或是其子类 | 不能比父类更严格 |
方法重载 | 同类 | 相同 | 不相同 | 无关 | 无关 |
对象的比较
在JAVA语言中,为对象之间的比较提供了两种方法
1. “==”运算符
2. 使用 equals()方法
区别是:
“==”运算符所进行的是所引用对象的内存地址是够一致
equals()方法是String类中的方法,其所进行的是两个对象引用所指的内容是否相同的比较