类的继承 总结

 类与类之间的关系有三种。1,依赖。2,聚合,3,继承。这一章主要讲继承关系。

1.1类,超类和子类

  • 子类继承父类,所有类继承超类。protected只能被子类调用,这些访问修饰符上一章也有讲过。然后对象变量因为继承就有了多态的概念。一个对象变量可以引用多个类对象,可以引用这个类对象,也可以引用那个类对象。接着是抽象方法。一个类中有抽象方法,那么这个类也应该是抽象类。子类构造器可以调用父类构造器,采用super关键字。定义子类构造器可以在第一行采用super调用父类构造器的意义是为了对某些域进行初始化。这一部分感觉很少。后面遇到了再补充吧。

2.1Object类

  • Java所有类的始祖是Object类。

  • 看这个String类的时候给我绕了一圈,差点糊涂了。Obejct类的equals方法用于判断两个对象是否拥有相同的引用,另外还有一个对象导出的一个整型值叫散列码,采用hashCode方法。如果重写equals方法就必须重写hashCode方法。

  • 为了保证一个类的实例对象在HashSet中正常存储,要求当equals()方法比较结果相等时,其哈希码也必须相等。即相等的对象必须拥有相等的hash code。

  • hashCode的作用?--->一个集合中是否包含某个对象,判断方法:如果包含,那么这个对象通过hashCode方法生成一个哈希码,然后通过算法映射到某个区域,最后通过equals方法比较此对象与该区域其它对象是否内容相同。hashCode用于判断对象是否属于某个集合。

  • 相等的对象必须拥有相等的hashCode。

public class ClassOne {
    public static void main(String[] args) {
        //缓冲区中new了一个String对象
        String a = "abc";
        //内存堆中new了一个String对象
        String d = new String("abc");
        //比较对象引用
        System.out.println(a==d);
        //比较对象内容
        System.out.println(a.equals(d));
        //hashCode相等说明它们属于同一个集合类
        System.out.println(a.hashCode());
        System.out.println(d.hashCode());
    }
}
输出:
false
true
96354
96354

Process finished with exit code 0
  • 收获很多。特别是Object的equals方法比较两个对象的引用是否相等,还有hashCode比较两个对象是否属于同一个集合。equals相等那么hashCode必然相等,hashCode相等,但是equals不一定相等。
image.png

盗个图,感谢!

你可能感兴趣的:(类的继承 总结)