JavaSE基础 (十)

类和类之间的关系

A is a B 泛化 (继承 实现)

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

A use a B 依赖 (依赖)need a

继承

1.子类继承父类,通过一个关键字 extends
2.子类的对象可以调用父类中的(public protected)属性和方法
3.子类可以添加自己的属性和方法
4.子类从父类继承过来的方法不能满足子类的需要,可以在子类中重写父类的方法 指内容重写
5.每一个类都有一个继承类,如果extrends关键字不写,默认继承Object类
6.java中继承是单个存在的(单继承)每一个类都只能有一个继承类(在extrends后面写一个类)目的是让类变得更安全,可以通过传递方式实现多继承的效果,后续还有多实现
7.继承在内存中的存储形式
8.关于this和super的使用

方法重写与重载

   方法重写override                                 方法重载overload
1.   产生两个继承关系的类                          一个类中的一组方法
     子类可以写父类的方法
2.特征符  
          final static abstract                          没有要求    
      父类方法是 final  子类不能重写
      父类方法是 static 子类不存在
      父类方法是 abstract 子类必须重写
3.权限修饰符 
        子类可以大于等于父类                             没有要求
4.返回值  
        子类可以小于等于父类                             没有要求
5.参数     
        子类父类必须一致                          每一个方法参数必须不一致
6.名字    
        子类父类必须一致                          一个类中的方法名必须一致
7.异常      
           运行时 编译时
    如果父类方法抛出运行时异常:                         没有要求
    子类可不予理会
    如果父类方法抛出编译时异常:
    子类抛出异常的个数和类型都少于等于父类
8.方法体   子类方法内容和父类不一致              每个重载方法执行过程不一致

Object类

        Object类是所有类的父类 Object类没有父类
        Object方法 
        1.toString方法 打印输出一个对象变成字符串
        public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
        2.hashcode()将对象的地址在内存中计算得到一个整数
        3.equals()用来比较两个对象的内容
         == 和equals的区别
         equals方法是Object类中继承的方法 默认比较地址
         ==可以比较基本类型比较(值)也可以用来比较引用类型比较(地址)
         如果想要改变规则可以方法重写
          public boolean equals(Object obj) {
    return (this == obj);
}
        4.getclass()   获取对应类的映射
        5.wait()      线程进入挂起等待状态
        6.notify()     唤醒线程
        7.notifyAll()   唤醒所有
        8.finalize      权限修饰符 protected在对象被GC回收时默认执行方法 相当于C++析构函数
        9.clone()     权限修饰符 protected为了克隆对象

this和super的使用

1.this和super都是指代词 代替的是对象
2.this代替的是当前执行方法时的那个对象 不一定是当前类的
  super代替的是当前执行方法时父类的那个对象 空间内部那个
3.都能调用一般属性和方法
4.可以放在类成员的任一位置(属性,方法,构造,块)
5.注意调用一般方法的时候来回调用(写法编译好用)执行可能产生问题 (stack overflow error)
6.可调用构造方法(放在构造方法的第一行)
7.this和super在构造方法中调用另一个类的构造方法不能出现在第一行
8.构造方法之间不能用来互相调用(编译不好用)

upload successful