zoukankan      html  css  js  c++  java
  • 继承(二)

    在继承链上进行向下的转换的一些事项:

     超类转换为子类前要检查(为什么要将超类转换成子类?这通常意味着超类的设计存在问题)

    抽象类

    如果一个方法用abstract修饰,则在这个类里就不用实现这个方法了

    抽象类的语法和注意事项

    子类是否实现抽象的影响:

    注意:

    关于抽象超类引用的问题:

    关于调用的问题

    通常的权限访问:

    protected关键字的设计初衷

    protected对所有子类以及同一个包中的所有其他类都可见

    另外,默认情况下,不加修饰符的时候只对本包可见

    Object类:
    哪些是对象,哪些不是对象:

    所以:
    Object obj = new Employee("Mike", 100);

    obj = new int[10];

    是正确的

    equals方法:

    关于equals的初始含义和实际运行过程中应该有的含义:

    equals方法的使用示例:

    import java.io.Console;
    import java.time.*;
    import java.util.*;
    
    class Employee{
        private String name;
        private int age;
        public Employee(String a_name, int a_age) {
            name = a_name;
            age = a_age;
        }
        
        // 如果要比较Manager是否相等,则可以先:
        // super.equals(obj) ... 进行比较大小
        public boolean equals(Object o) {
            if(this == o)
                return true;
            
            if(o == null)
                return false;
            
            if(getClass() != o.getClass())
                return false;
    //        if (!super.equals(o))
    //            return false;
    //        
            Employee oe = (Employee) o;
            // 如果name == null, 下面的写法就崩溃了,所以要下下种写法
            // return name.equals(oe.name) && age == oe.age;
            return Objects.equals(name, oe.name) && age == oe.age;
        }
    }
    
    class Manager extends Employee{
        public Manager(String n, int a) {
            super(n, a);
        }
    }
    public class Test{
        public static void main(String[] args) {
            Employee a = new Employee("Mike", 100);
            Employee b = new Employee("Jack", 20);
            Manager m = new Manager("Ec", 21);
            System.out.println(a.equals(b));
            System.out.println(a.getClass() == m.getClass());
        }
    }

    问题:

    getClass 与 instanceof 有什么区别呢?

    equals的替换性

    。。。完美的equals方法

  • 相关阅读:
    异地主从双机热备份实战
    基于Crawler4j的WEB爬虫
    【转】TCP拥塞控制
    js定时器setTimeout和setInterval的使用
    制作 macOS Sierra U盘USB启动安装盘方法教程 (亲测)
    VMware 14 安装 macOS10.13 详细图文教程
    解决多线程下@Autowired无法注入
    MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)
    关于MYSQL
    关于Mybaits
  • 原文地址:https://www.cnblogs.com/geeklove01/p/10028774.html
Copyright © 2011-2022 走看看