Java面向对象的三大特性为:继承,封装和多态。
封装:把对象封装成一个类。
可以封装方法和类,封装隐藏了代码的实现细节,可以提高安全性和复用性。
Java中提供了四种权限:public(对外公开),private(只有类本身可以使用),protected(对子类和同一个包中的类公开),default(对同一个包中的类公开)。
继承:将一个已经存在的类的内容作为自己的内容,并且可以修改原来的方法,一个子类只能继承一个父类。
继承的优点:
1.可以使用父类所有非私有的方法。
2.可以继承父类中定义的成员方法以及成员变量,还可以重写父类的方法以增加子类的功能。
public class People {
{
System.out.println("我是父类普通代码块");
}
static {
System.out.println("我是父类静态代码块");
}
public People() {
System.out.println("我是父类构造代码块");
}
}
public class Student extends People {
{
System.out.println("我是子类的普通代码块");
}
static {
System.out.println("我是子类的静态代码块");
}
public Student () {
System.out.println("我是子类的静态代码块");
}
}
如果一个类继承自一个父类,初始化它的时候,代码的执行程序为:父类的静态代码块–子类的静态代码块–父类的普通代码块–父类的构造代码块–子类的普通代码块–子类的构造代码块。
多态:利用父类引用指向子类对象,在程序调用某个方法的运行期进行绑定。(必须是类与类之间的关系,可以是继承,也可以是实现)
转型分为两种,一种是向下转型(将父类的引用转成子类类型),向上转型(类型提升)。
多态的三大条件:
1.需要有继承(继承类,继承抽象类,实现接口)
2.需要有重写
3. 父类型的引用执行子类型
public class A {
public void show() {
fun();
}
public void fun() {
System.out.println("A");
}
}
public class B extends A {
public void fun() {
System.out.println("B");
}
}
public class C extends A {
public void fun() {
System.out.println("C");
}
}