继承

Posted geeklove01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承相关的知识,希望对你有一定的参考价值。

在继承链上进行向下的转换的一些事项:
技术分享图片

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

 

抽象类

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










以上是关于继承的主要内容,如果未能解决你的问题,请参考以下文章

26.Qt Quick QML-RotationAnimationPathAnimationSmoothedAnimationBehaviorPauseAnimationSequential(代码片段

Flask之模板之宏继承包含

java中封装,继承,多态,接口学习总结

php如何实现多继承?

如何覆盖继承的嵌套类中存在的虚拟方法

多线程 Thread 线程同步 synchronized