凉城旧巷
Python从入门到自闭,Java从自闭到放弃,数据库从删库到跑路,Linux从rm -rf到完犊子!!!

多态

一、何为多态

多态是指,针对某个类型的方法调用,其真正执行的方法取决于运行时期实际类型的方法

public class Main {
    public static void main(String[] args) {
        Person p = new Student();
        p.run(); // 是Student.run
    }
}

class Person {
    public void run() {
        System.out.println("Person.run");
    }
}

class Student extends Person {
    @Override
    public void run() {
        System.out.println("Student.run");
    }
}

二、重写Object的方法

  • toString():把instance输出为String
  • equals():判断两个instance是否逻辑相等;
  • hashCode():计算一个instance的哈希值。
public class Person {
    ...
    // 显示更有意义的字符串
    public String toString() {
        return "Person:name=" + name;
    }
    
        // 比较是否相等
    public boolean equals(Object o) {
        // 当且仅当o为Person类型:
        if (o instanceof Person) {
            Person p = (Person) o;
            // 并且name字段相同时,返回true:
            return this.name.equals(p.name);
        }
        return false;
    }

    // 计算hash
    public int hashCode() {
        return this.name.hashCode();
    }

三、final关键字

final修饰父类中的方法,那么子类就无法对该方法进行重写

public class Person{
    public final void func(){
        ...
    }
}


public class Student extends Person{
    ...
    // 无法对func方法进行重写
}
  • final修饰的方法可以阻止被覆写;
  • final修饰的class可以阻止被继承;
  • final修饰的field必须在创建对象时初始化,随后不可修改。
posted on 2020-01-08 15:11  凉城旧巷  阅读(129)  评论(0编辑  收藏  举报