• 继承(二)


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

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

    抽象类

    如果一个方法用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方法

  • 相关阅读:
    sqlldr、sqluldr2_w64案例
    查看oracle的sid和sevice_name
    杂记
    GAN学习
    Leetcode 第 217 场周赛
    牛客编程巅峰赛S2第4场
    SAR图像变化检测的一点想法
    Fire! UVA
    HDU
    HDU
  • 原文地址:https://www.cnblogs.com/geeklove01/p/10028774.html
Copyright © 2020-2023  润新知