面向对象的本质:以类的方式组织代码,以对象的方式组织数据。
面向对象三大特性:封装 继承 多态
封装:
概念:
隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性,可维护性。
程序设计要求“高内聚,低耦合”。
实现:
使用访问控制符,实现封装:
private:仅同一个类里可以看到
default:同一个类和同一个包中可以看到
protected:同一个类、同一个包和子类中可以看到(不同包的子类也可以看到)
public:公开,所有类都可以看到
要点:
类的属性的处理:一般使用private(除非本属性确定会让子类继承)。
提供相应的get/set方法来访问相关属性,从而提供对属性的读取操作。
===================================================================
继承:
概念:
继承是类与类之间的一种关系。
类是对对象的抽象,继承是对某一批类的抽象。
子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法)。
子类是父类的扩展,提高代码的复用性。
java中只有单继承,没有多继承,多继承可以通过接口来实现。
extends:
在子类加上extends关键字继承相应的父类。
final:
final修饰类,则该类不可被继承。
方法的重写:
在子类中可以根据需要对从父类中继承来的方法进行重写。
重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。
重写方法不能使用比被重写方法更严格的访问权限。(因为:父类引用指向子类对象)
===================================================================
多态:
概念:
多态就是对象的多种形态
多态性可以用来实现动态联编,程序的最终状态只有在执行过程中才被决定而并非在编译期间就决定了。
好处:
提高系统的灵活性和扩展性。
引用变量的两种类型:
编译时类型(模糊一点,一般是一个父类)由声明时的类型决定。
运行时类型(运行时,具体是哪个子类就是哪个子类)由实际对应的对象类型决定。
多态的存在要有三个必要条件:
要有继承,要有方法重写,父类引用指向子类对象。