zoukankan      html  css  js  c++  java
  • Java(七)——面向对象(3)-多态

    多态

    一、何为多态

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

    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必须在创建对象时初始化,随后不可修改。
  • 相关阅读:
    CDN技术分享
    大型网站架构技术一览
    Remember-Me功能
    spring-security用户权限认证框架
    关于 tomcat 集群中 session 共享的三种方法
    Nginx+Tomcat+Terracotta的Web服务器集群实做
    Terrocotta
    使用hibernate tools插件生成POJO
    Session简介
    Cookie设置HttpOnly,Secure,Expire属性
  • 原文地址:https://www.cnblogs.com/linagcheng/p/12166770.html
Copyright © 2011-2022 走看看