Java 一篇搞定面向对象中的多态

 

Java 面向对象中的多态中的多态包括关键字@Override,覆写Object方法,调用super和final 关键字修饰父类方法。

一、多态的覆写

如果一个子类中的方法和父类中的方法名相同,被称为覆写。在 Java面向对象的继承——简明教程 中我们知道,如果父类向下转型的话,由于子类的属性和方法可能会比父类的多,父类在向下转型中可能会出错,所以为了要检查在覆写过程中可能会出错,JAVA 提供了关键字 @Override 可以让编译器帮助检查是否进行了正确的覆写。

要注意的是,针对某个类型的方法调用,其真正执行的方法取决于运行时期实际类型的方法。

例如:


public class Main {
    public static void main(String[] args) {
    }
}

class Man{
    public void run() {}
}

public class Student extends Man{
    @Override // 写在此处
    public void run() {}
}

二、覆写Object方法

既然子类可以覆写父类的方法,所以可以覆写Object的方法。方法也是一样。

例如:

class Man{
    @Override
    public String toString() {
        return "Man:name=" + name;
}
}

三、调用super

前面我们在 Java面向对象的继承——简明教程 中知道super 关键字可以调用父类的属性和方法,所以我们也可以使用super 调用父类的被覆写的方法。

四、final修饰方法

继承可以允许子类覆写父类的方法。如果一个父类不允许子类对它的某个方法进行覆写,可以把该方法标记为final修饰不能被覆写。同样的,如果一个类不希望任何其他类继承自它,也可以用final 标记。

例如:

class Man{
protected String name;
//final修饰不能被覆写
    public final String hello() {
        return "Hello, " + name;
    }
}

// 不想被任何类继承用final 标记
final class Man{
    protected String name;
}

以上是关于本章java面向对象多态的学习内容,内容不多,不过对于处理面向对象的状态却非常重要,包含了很多java的特色。

本文为博主原创文章,知识共享,开源精神,转载注明出处。