面向对象
面向对象是一种思想,面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节;这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种优化,操作起来更加的方便,简化了过程。面向对象有三大特征:封装性、继承性、多态性
1.封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式
好处:将变化隔离、便于使用、提高复用性、提高安全性
原则:将不需要对外提供的内容隐藏起来;把属性隐藏,提供公共方法对其访问
2.继承:提高代码复用性;继承是多态的前提
①子类中所有的构造函数都会默认访问父类中的空参数的构造函数,默认第一行有super();若无空参数构造函数,子类中需指定;另外,子类构造函数中可自己用this指定自身的其他构造函数。
3.多态
父类或接口定义的引用变量可以指向子类或具体实现类的实例对象
好处:提高了程序的扩展性
弊端:当父类引用指向子类对象时,虽提高了扩展性,但只能访问父类中具备的方法,不可访问子类中的方法;即访问的局限性。
前提:1,实现或继承 ;2,方法重写;3,父类引用指向子类的对象
其中多态最为重要
例子:
司机操作不同的交通工具
司机 driver类
public class Driver {
/*
* 驾驶的方法 传入交通工具
*/
public void drive(Vehicle v){
v.go();
}
交通工具 vehicle类
public abstract class Vehicle {
//抽象方法
public abstract void go();
}
子类汽车 Car类
public class Car extends Vehicle{
@Override
public void go() {
System.out.println("驾驶小车");
}
}
子类飞机 plane类
public class Plane extends Vehicle{
@Override
public void go() {
System.out.println("驾驶飞机");
}
}
测试类
public class Test {
public static void main(String[] args) {
Driver driver = new Driver();
//父类交通工具的引用指向子类飞机的实例
driver.drive(new Plane());
//父类交通工具的引用指向子类汽车的实例
driver.drive(new Car());
}
}
结果
驾驶飞机
驾驶小车