java学习笔记(七)类和类之间的关系

类和类之间的关系

A is-a B 泛化(继承 实现)
A has-a B 包含(组合 聚合 关联)
A use-a B 依赖(依赖) (need-a)

继承 is-a

  1. 子类继承父类,通过一个关键字 extends
  2. 子类的对象可以调用父类中的(public protected)属性和方法 当做自己的来使用
    2.1构造方法严格意义来说 不算做子类继承过来
      只是单纯的在子类调用构造方法时默认调用父类的构造方法
    2.2程序块严格意义来说 不算做子类继承过来(子类自己调用不到 没名字)
      程序块子类不能直接调用 子类执行构造方法之前
      默认调用了父类的构造方法 父类构造方法之前自动执行父类的块
  3. 子类可以添加自己独有的属性和方法的 子类还可以添加自己独有的成员(属性 方法)
  4. 子类从父类中继承过来的方法不能满足子类需要,可以在子类中重写(覆盖)父类的方法 更多指的是内容
       4.1关于 方法重写(override) 和 方法重载(overload)区别
  5. 每一个类都有继承类,如果不写extends关键字,默认继承Object,如果写了extends则继承后面那个父类
    可以理解为Object类非常重要 是任何一个引用类型的父类(直接或间接的继承Object) Object类没有父类
      Object类很重要,他是所有引用类型的父类,Object类是没有父类的
      
      Object类中的方法
  6. Java中继承是单个存在的(单继承) 每一个类只能有一个继承类 (在extends关键字后面只能写一个类)
    可以通过传递的方式实现多继承的效果 后续还会有多实现
  7. 继承在内存中的存储形式
  8. 关于this和super的使用
    this和super都是指代词 代替的是对象
    this代替的是当前执行方法时的那个对象 不一定是当前类的
    super代替的是当前执行方法时的对象的父类对象 空间内部的那个
    都能调用一般属性 和 一般方法
    可以放置在类成员的任意位置(属性 方法 构造 块)
      注意调用一般方法的时候可以来回互相调用(写法 编译好用) 执行可能产生问题(StackOverflowError)
    可以调用构造方法(放在构造方法的第一行)
      this和super在构造方法中调用另一个类的构造方法不能同时出现在第一行
      构造方法之间不能来回互相调用(编译就不好用)

Object类中的方法

hashCode()    将对象在内存中的地址经过计算得到一个int整数
           public native int hashCode();
equals()      用来比较两个对象的内容 Object默认效果是==
           ==可以比较基本类型(比较值) 可以比较引用类型(比较地址)
           equals方法时Object类中继承过来的方法 默认效果比较地址
           如果想要改变其规则 可以进行方法重写
           public boolean equals(Object obj){
             return (this == obj);
           }
toString()     打印输出时将对象变成String字符串
             public String toString(){
                return this.getClass().getName()+"@"+Integer.toHexString(this.hashCode());
             }
getClass()     获取对象对应类的类映射(反射)
wait()        线程进入挂起等待状态 存在方法重载
notify()      线程唤醒
notifyAll()      唤醒所有
finalize()      权限修饰符是protected 在对象被GC回收的时候 默认调用执行的方法
            final finally finalize区别
            protected void finalize(){
            }
clone()      权限修饰符是protected 为了克隆对象

发布了30 篇原创文章 · 获赞 0 · 访问量 6648

猜你喜欢

转载自blog.csdn.net/qq_37710756/article/details/103356302