面向对象三大特性
封装性
继承性
多态性
封装
封装性就是隐藏实现细节,,仅对外公开。
类是数据与功能的封装,数据就是成员变量,功能就类方法或对象方法
对数据的封装,也就是对成员变量的封装
不封装的缺点:当一个类把自己的成员变量暴露给外部的时候,那么该类就失去对该成员变量的管理权,别人可以任意的修改你成员变量。
封装就是将数据隐藏起来,只能用此类的方法才可以读取或者设置数据,不可被外部任意修改是面向对象设计本质。降低了数据被误用的可能性! ,提高代码的灵活性
/**
* 员工
*
* @author 鑫
*/
public class Staff {
/**
* 姓名
*/
private String name;
/**
* 地址
*/
private String address;
/**
* 基本工资
*/
private double wages;
//获取员工姓名
public String getName() {
return name;
}
//给员工姓名赋值
public void setName(String name) {
this.name = name;
}
//获取员工地址
public String getAddress() {
return address;
}
//给员工地址赋值
public void setAddress(String address) {
this.address = address;
}
//获取员工基本工资
public double getWages() {
return wages;
}
//给员工基本工资赋值
public void setWages(double wages) {
this.wages = wages;
}
}
封装的好处
- 将变化隔离
- 提高安全性
原则
- 将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共的方法对其访问
继承
继承基本概念
现实生活中的继承
-
- 类似于遗传的意思,比如说你从你母亲那里遗传了一头美丽的金发,也就是说你和你母亲一样都有一头美丽的金发。
-
- 但是也存在不同的地方,比如说你的眼睛比你母亲大。
Java中的继承
-
- 员工为父类,这个类包含所有员工所共有的特性,比如说姓名、地址、基本工资等。
-
- 员工下面有能细分为具体的某类员工,比如说工人、经理、董事等。工人、经理、董事具有员工所共有的特性,也具有各自的特性。比如说董事有交通补助的特性,而员工不具有这个特性。
-
- 董事下面还能继续细分为执行董事、非执行董事等,所以子类也能继续拥有子类。
/**
* 董事
*
* @author 鑫
*
*/
//Director类为上面例子Staff类的子类
public class Director extends Staff {
/**
* 交通补助
*/
private double transportationAssistance;
B类继承A类,那么B类将拥有A类的所有属性和方法,此时我们说A类是B类的父类,B类是A类的子类
C类继承B类,那么C类将拥有B类中的所有属性和方法,包括B类从A类中继承过来的属性和方法,此时我们说B类是C类的父类,C类是B类的子类
基类的私有属性能被继承,不能在子类中访问。
继承是单继承:也就是说一个类只能一个父类,不能继承多个父类
多态
什么是多态?
什么是多态:多态就是某一类事物的多种形态
-
- 狮子: 狮子–>动物
-
- 老虎: 老虎–>动物
程序中的多态:父类指针指向子类对象
多态的条件
- 有继承关系
- 子类重写父类方法
- 父类指针指向子类对象
老虎 a = [老虎 new];
动物 b = [老虎 new];
狮子 c = [狮子 new];
动物 d = [狮子 new];
多态的优点
多态的主要好处就是简化了编程接口。它允许在类和类之间重用一些习惯性的命名,而不用 为每一个新加的函数命名一个新名字。这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类的区分开来。
多态也使得代码可以分散在不同的对象中而不用试图在一个函数中考虑到所有可能的对象。 这样使得您的代码扩展性和复用性更好一些。当一个新的情景出现时,您无须对现有的代码进行 改动,而只需要增加一个新的类和新的同名方法。