1.抽象
对象的共同特征总结出来构造类的过程。
2.封装
将类的某些方法或者变量设置为对外不可访问性,只向外提供简单的接口。
3.继承
子类通过继承拥有父类的某些方法或者变量的特征。
4.多态
允许不同子类型的对象对同一消息作出不同的响应。这个比较难理解。可以举例说明。
public static void main(String[] args) {
Person person;
person = new Student();
person.getJob();
person = new Teacher();
person.getJob();
}
输出的结果:
Student
Teacher
由于Person类有两个子类,因此可以用Person类的对象去new一个子类。方法如果被重写了的话,就输出的是子类的方法。
5.重写和重载的区别
重载(OverLoad)先上代码
public class Person {
public Person() {
}
public Person(String name) {
this(name, 18);
}
public Person(String name, int age) {
this();
}
public void getJob(int age) {
if (age == 18) {
System.out.println("student");
}
}
public void getJob() {
System.out.println("no Job");
}
}
可以看得出,上面的构造器和方法,都是重载了。相同的方法名,必须保证相同的出参,而入参可以不同。
方法的重写(Override),看以下代码
public class Student extends Person {
@Override
public void getJob() {
System.out.println("Student");
}
}
Student类重写了父类Person的getJob方法。
综上,
方法重载(overload)实现的是编译时的多态性(也称为前绑定)。
而方法重写(override)实现的是运行时的多态性(也称为后绑定)。