Java

类与类之间的关系有:

    A    is    - a   泛化(继承、实现)

    A has - a   包含(组合、聚合、关联)  

    A use - a 依赖(依赖)

继承(is - a)

继承是所有OOP语言不可缺少的部分,在java中使用extends关键字来表示继承关系。当创建一个类时,总是在继承,如果没有明确指出要继承的类,就总是隐式地从根类Object进行继承。

 1.子类继承父类(extends)

  (1)子类可以继承父类的 public 和 protected 属性和方法当做自己 的来使用,不能够继承 private 成员变量;

  (2)子类可以添加自己独有的属性和方法;

  (3)如果子类从父类中继承的方法不能满足子类的需要,那么可以在子类中重写(覆盖)父类的方法,更多的是指改变方法内容;

  (4)每一个类都有继承类,如果不写 extend 关键字,则默认继承 Object (Object没有父类),如果写了 extend ,则继承extend后的那个父类;

  (5)Java中继承是单个存在的(单继承),每一个类只能有一个继承类(即在 extend 后面只能写一个类);

      但是可以通过传递的方式实现多继承的效果,

  (6)Java在继承中的存储形式

    (7)关于 this 和super 的使用

      this 和 super 都是指代词,代替的是对象;

      this代替的是当前执行方法时的那个对象,不一定是当前类的;

      super代替的是当前执行方法时的对象的父类对象;

      this 与 super 都可以调用一般属性 和一般方法;

      都可以放置在类成员的任意位置(属性、方法、构造、块)

      可以调用构造方法(要放在构造方法的第一行);

            this和super在构造方法中调用另一个类的构造方法不能同时出现在第一行

            构造方法之间不能来回互相调用

子类不能继承父类的构造器(构造方法或者构造函数),但是父类的构造器带有参数的,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的参数列表。

public class Animal{
        public Animal(){}
        public Animal(int a){
            System.out.println("我是动物的Int型构造方法");
        }
        public void sleep(){
            System.out.println("我是动物的睡觉方法");
        }
        public void eat(){
            System.out.println("我是动物的吃饭方法");
        }

}

public class Preson extends Animal{
    public Preson(){}
    public Preson(int a){
        System.out.println("我是人类的Int型构造方法");
    }

    public void sleep(){
        System.out.println("我是人类的睡觉方法");
    }
    public void eat(){
        System.out.println("我是人类的吃饭方法");
    }
}

public class Test {
    public static void main(String[] args) {
        Preson animal = new Preson();
        animal.eat();
        animal.sleep();
    }
}

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  为了克隆对象
原文地址:https://www.cnblogs.com/yyanghang/p/11067138.html