面向对象主要由三大特性:
-
封装
-
继承
-
多态
一.封装定义:
编写一个类就是对数据和数据的操作封装,封装即时隐藏一切可隐藏的东西,只向外界提供最简单的编程接口。(简单的来说在Java中一个文件包下的类文件....类下面的方法,属性....方法下的代码等.....)。
二、继承:
定义: 子类继承父类的特征和行为。提供继承信息的类被称为父类(基类),得到继承信息的类被称为子类(派生类)。
特点:1、一个类只能继承一个父类,构造方法不能被继承。 2、支持多层继承 3、父类private 的属性和方法不能继承。
具体理解:
继承:从一个已有的组件中获取元素,避免重复构建某些元素。
好处:提升重复利用。建立体系关系。
Java 实现:
通过extends关键字实现类与类之间的继承。被继承的类称为父类、基类,实现继承的类称为子类。·子类可以继承父类的非私有化 (private)元素(成员属性、成员方法)。
构造器不能被继承!但是父类构造器可以被子类调用。
注意:
Object是所有Java类的根父类。如果没有显式声明继承关系,那么这个类默认继承自Object。
三、多态
定义:同一个行为具有多个不同表现形式或形态能力。
优点:提升程序的灵活性、可扩展性。
缺点:编译期间如果对象的类型是编译类型,且编译类型是父类类型,那么写代码时,只能调用父类类型提供的功能方法,不能调用真实类型中的特有方法。
多态实现方式:
方式一:重载与重写
重载:在一个类中,同一个方法名称,不同的参数类型及个数,可以完成不同功能。
重写:同一个方法名称,子类继承父类的方法,根据操作的子类不同,所完成的功能也不同。
方式二:抽象类和抽象方法
抽象方法:一个没有方法体的方法称为抽象方法。
格式:修饰符 abstract 返回值类型 方法名(参数列表){}
抽象类:abstract class 类名{}
特点:1、抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类。
2、抽象类不可以是实例化。
3、抽象类的子类,可以是抽象类,也可以是具体类。如果子类为具体类,需要重写抽象类中所有抽象方法。
方式三:接口
定义:是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。
接口无法被实例化,但是可以被实现. 一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。
具体理解:
多态:在面向对象编程中,工作的核心单元对象,可以在不同时期拥有多种形态(编译形态、真实形态),以适应更灵活的程序编码。
Java 实现:
前提条件:类与类之间有关系(父类与子类的继承关系、接口与实现类的实现关系)。对象可以在体系中的多个类型中完成相互转换:
类型自动提升(向上转型)︰子类自动提升为父类(祖父类)类型。
类型强制转换(向下转型)∶父类类型的对象通过强制转换语法转换为子类类型(向下转型时需要关注该对象的真实类型,最多向下转换为其真实类型,且不能转换为无关类型)
在多态情况下,如果子类重写了父类方法,且对象的真实类型是子类类型,那么在程序运行期间,调用的方法指向真实类型中的方法。