四大特征分别为:抽象、封装、继承、多态
下面分别说一下这四个特征:
1、抽象
抽象就是对现实的一类事物,抽取其特点,并把这些特点整合一起,用java语言来表示该类事物。
2、封装
封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用。对于封装的概念:封装也称为信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他部分只有通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。也就是说,用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。
3、继承
一个类继承另一个类,则称继承的类为子类,被继承的类为父类。子类与父类的关系并不是日常生活中的父子关系,子类与父类而是一种特殊化与一般化的关系,是is-a的关系,子类是父类更加详细的分类。如class dog extends animal,就可以理解为dog is a animal.注意设计继承的时候,若要让某个类能继承,父类需适当开放访问权限,遵循里氏代换原则;向修改关闭对扩展开放,也就是开-闭原则。
有人说,继承不就是子类跟父类一样了吗?若不加以改变子类,确实跟父类一样,在这里有两种方式可以使子类和父类产生差异,其一就是直接在子类中添加新的方法;其二就是改变父类的方法,也就是所说的覆盖。
4、多态
多态必须建立在封装和继承之上。
多态也就是说相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。
举例说明:
Shape为父类,Circle、Line均继承Shape类。其中Shape类中有draw()方法,因此Circle、Line类中也继承了该方法。代码如下
public class Shape {
public void draw() {
System.out.println("Shape draw");
}
}
public class Circle extends Shape {
public void draw() {
System.out.println("Circle draw");
}
}
public class Line extends Shape {
public void draw() {
System.out.println("Line draw");
}
}
在测试的main函数中的代码
Shape line = new Line();//这里是上转型
Shape circle = new Circle();
line.draw();
circle.draw();
结果就是:
Line draw
Circle draw