在java面向对象中,有三大特性:继承、封装、多态
一、封装
封装的概念:
封装是java的三大特性之一,把对象的内部细节封闭起来,只提供操作对象属性的公共方法 。
封装是面向对象编程语言对客观世界的模拟:例如:电视机,它的内部元件被封闭起来了,仅仅暴露电视机按钮来供人们使用,这样就没有人能任意的更改咱们的元件
java里面通过将属性设置为私有的,对属性都使用暴露出来的公共接口,这样数据才更安全、更好维护。
封装的目的:
通过公共方法访问数据,可以从方法里面加入逻辑,避免不合理的访问,可以进行数据检查,保证数据的完整性,防止不希望的交互和防止不合法的访问,便于后期的修改,提高代码的可维护性
封装的实现:
1.隐藏对象的属性和实现细节,不允许外部直接访问(.),属性私有化
2.提供公开的方法操作和访问数据
类的继承:
·继承的概念
继承是java面向对象的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的方法和特征,使得子类对象(实例)具有父类的实例域和方法,或者子类从父类继承方法,使得子类具有父类相同的行为
生活中的继承:
车可以分为自动车、机动车、高铁,这三类车都具有车的共性,但是同时又具有自身的特点和新的功能
所以父类更通用,子类更具体
·类的继承格式
在java 中通过extends关键字可以申明一个类是从另一个类继承来的,一般格式如下:
class 父类{
}
class 子类 extends 父类{
}
·怎样理解继承:
·继承是java三大特性中的另一个特性
·继承是扩展类的功能,扩展出新的类能吸收已有类的属性和行为,并能扩展出新的能力
·继承:父类和子类
·基类:不由任何类派生出来的类
·父类:一个子类的最近的上层类
·子类:从一个类派生出来的类称为该类的子类
·继承的特性:
·子类拥有父类的非private属性和方法
·子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
·子类可以用自己的方式实现父类的方法
·java的继承是单继承,但是可以多重继承,单继承就是一个类只能继承一个父类,多重继承就是继承出来的子类还可以派生出它的下一层子类,即实现了java中分等级层次的类。
·提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)
·父类和子类的关系:is a :子类 is a 父类,
·java的子类不能获得父类的构造方法
·继承的关键字
·extends和implements关键字
·extends和implemtes这两个关键字来实现继承,而且所有的类继承与java.lang.Object,也成为超级类,当类中没有这两个关键字的时候,则默认继承object
注意:这里提一点:所有在java.lang中的类不需要import,因为比较常用,java规定直接用既可以,而除java.lang之外包中的类,若要使用均需要使用import导入。
·super与this关键字
super关键字指的是父类,我们可以通过super关键字来实现对父类成员的访问,也可调用父类的构造函数实现初始化父类,用来引用当前对象的父类。
this:指的是当前对象,即是指向自己的引用。
package com.lemon.java6.day7.selfTest;
public class Borrower extends Member {
public Borrower() {
super();
}
/**
* 借款人借款实现方法
* @param amount
*/
public void borrow(double amount) {
System.out.println("方法待实现");
}
/**
* 重写父类方法
*/
public boolean recharge(Double amount) {
boolean result = super.recharge(amount);
if (result) {
System.out.println("充值成功,可以去还款了");
return true;
}else {
return false;
}
}
void test() {
super.recharge(100.0);//父类方法
this.recharge(200.0);//子类重写的方法
}
}
·构造器
子类不能继承父类的构造器,如果父类的构造器带有参数,则必须在子类中显示的通过super关键字调用父类构造函数并陪以适当的参数列表
如果父类构造器存在无参构造器,那么在子类的构造器中不需要使用super关键字调用父类构造器,系统会自动调用父类的无参构造函数
但若只定义带参数,而子类不调用父类带参构造函数,就会报错:
多态的概念和好处:
·不同的对象对于相同的方法表现出不同的特征和响应
如对自行车和汽车,他们都具有刹车的功能,但是它们的刹车方式却是完全不同的。
·多态的概念:
用父类类型来接收子类的对象。java通过方法重写来实现多态。
通过方法重写,子类可以重新实现父类的某些方法,使其具有自己的特征
通过方法重写,相同类型的对象(变量),执行同一个方法表现出不同的行为特征,称为多态
·多态的优点
提高了代码的复用性,简化了代码