**
面向对象三大特征
**
一、封装
1、封装
概述:是面向对象三大特征之一(封装,继承,多态)。是面向对象编程语 言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的 。
封装原则:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问成员变量private,提供对应的getXxx()/setXxx()方法。这里的get/set方法是为了让其他类来访问和赋值这些信息的。
封装的好处:通过方法来控制成员变量的操作,提高了代码的安全性
把代码用方法进行封装,提高了代码的复用性
2、构造器
什么是构造器:构造器通常叫做构造方法、构造函数,它几乎作用与每个项目中。构造器的格式如下:
修饰符 类名(参数列表){
//构造函数无返回值
}
例子:
public class CarLei {
private String logo;
private String carlong;
private String color;
private String price;
public CarLei(String logo, String carlong, String color, String price) {
this.logo = logo;
this.carlong = carlong;
this.color = color;
this.price = price;
}
public CarLei() {
}
注意:①参数列表可以无参。无参叫无参构造方法,有参叫有参构造方法。
②构造器的名称必须和类名相同。
③如果我们没有定义构造方法,那么系统将自动默认有无参构造方法。如果有有参构造方法,而没有无参构造方法,那么就无法调用无参构造方法,只能调用有参构造方法,此时如果需要无参构造方法,只能手动输入无参构造方法。
④构造方法的作用是实例化对象,给对象赋值。
3、private关键字
定义:private是一个修饰符,可以用来修饰成员(成员变量,成员方法)。
特点: 被private修饰的成员,只能在本类进行访问,针对private修饰的成员变量。当变量被private修饰时,就需要通过get和set方法进行访问了
二、继承
1、继承
概念:继承是面向对象的三大特征之一。继承是让类和类之间产生关系(父子类关系),可以使得子类具有父类得属性和方法,还可以在子类中重新定义,以及追加属性和方法
实现继承的格式:
class 子类 extends 父类{};
eg:class Dog extends Animal{};
注意:通过extends关键字来实现继承。
子类继承父类后,只能使用父类中非私有的成员。
2、继承的好处和弊端
好处: 提高了代码的复用性(多个类相同的成员可以放在同一个类中);
提高了代码的维护性(如果方法的代码需要修改,修改一处即可)。
弊端:继承是侵入性的;
降低了代码的灵活性;(继承关系,导致子类必须拥有父类非私有的成员,让子类多了很多约束)
继承让类与类之间产生了关系,类的耦合性增强,当父类发生变化时子类实现也不得不发生变化,削弱了子类的独立性
3、继承的特点
java中类只支持单继承,不支持多继承。
java中类支持多层继承,多层继承的非私有成员可以传递
4、成员访问特点,成员方法的访问特点,构造方法的访问特点
访问成员变量:在子类方法中访问一个变量,采用的是就近原则
①子类局部范围找
②子类成员范围找
③父类成员范围找
④如果没有就报错(不考虑多层继承)
访问成员方法:通过子类对象访问一个方法
①子类成员范围找
②父类成员范围
③如果没有就是报错(不考虑多层继承)
访问构造方法:子类会继承父类中的数据,可能还会使用父类的数据。所以 子类初始化前,一定要先完成父类数据的初始化,原因是每一个子类构造方法的第一条语句默认都是:super()。
三、多态
1、多态
定义:同一个对象,在不同时刻表现出来的不同形态
2、多态的使用前提
要有继承或实现关系(继承关系或接口)
要有方法的重写
*要有父类引用指向子类对象
3、多态的好处和弊端
好处:提高程序的扩展性
弊端:不能使用子类的特有成员
4、多态的引用数据类型转型
向上转型(可以对比自动类型转换):父类引用指向子类对象就是 向上转型
格式:父类型 对象名=子类对象。
注意:向下转型主要是为了调用子类中不能调用的方法。
向下转型(对比强制类型转换):子类指向父类
格式:子类型 对象名=(子类型)父类对象。
5、多态成员访问特点:
访问成员变量:编译看父类(左边),运行看父类(左边)
访问成员方法:编译看父类(左边),运行看子类(右边)