首页 > 代码库 > [总结] 2016.12.5 星期一

[总结] 2016.12.5 星期一

  继承
在面向对象中,可以通过扩展一个已有类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承(子类指向父类)
语法:public class 子类 extends 父类{
如何判断类具有继承关系:
    1. has - a (组合)
     2.is - a (继承).
使用extends 关键字实现继承关系
Eployee 父类(又叫基类)
Hourly 子类 (又叫派生类)
基类可以有多个子类。可又叫超类。列:Object;
继承的优点
    1.代码的可重用性
    2.父类的属性和方法用于类
    3.子类可以扩展父类的属性和方法
    4.设计应用程序时变得更加简单
*扩展*
*Java中一个类只能有一个类,在某些OOp语言如C++中允许子类有多个父类*
*Object是所有类的超类,后面是共有的9个最常用的属性。需全部记住。*
*不是引用类型都不能用“= =”,而是应用类型所指向的“引用”业务相比较,“= =”判定两个引用是否指向同一个对象,equal.()是判定两个对象在业务上相等*

方法重写
子类将父类继承的方法再实现一次,叫做方法的重写,当我们打印对象或对对象进行字符串的操作就在调用toString来于Object的toString返回的全类名+十六进制数
当然我们可以根据自己的需要重写toString
方法重写规则---从父类继承而来的方法,子类重新实现(重载不要返回类型,只要求方法名一致)
    1.方法名必须保持一致
    2.参数列表必须保持一致
    3.返回类型必须保持一致
    4.访问修饰符必须大于等于父类
    5.子类重写后的方法不能抛出比父类重写前的方法更多的异常
    6.构造方法不能被继承,也没有重写,可以重载

this. 和 super.,this()和super()的区别:

this.指代当前对象能操作定义在本类上的属性方法
     能操作定义当前对象的父类上的被访问修饰符允许访问的属性方法

super.指代当前对象的父类部分
      不能操作定义在本类的属性和行为。
      能访问定义在父类上的被允许访问的属性和方法
      只有当本类中调用被重写方法之前的效果时使用super.其他时候都使用this。

this()指调用本类的其他构造,只能写在构造中,且必须是第一行

super()值调用父类指定的构造方法,只能写构造中且只能写在构造方法中第一句
         super()如果不写会默认调用父类的无参构造

// 面试题:调用一个无参构造方法,让子类和父类的都执行一遍

    public Class Father(){

    public Father(){
    this(1);

    System.out.pritln("在父类的构造函数中 1");
    }
    public Father(int a ){
    
    this (0,a)
    
    System.out.pritln("在父类的构造函数中 2");

    }

    public Father(int a ,int b){
    
    System.out.pritln("在父类的构造函数中 3");

    }
}
    public Class Son(){

    public Son(){
    this(1);

    System.out.pritln("在子类的构造函数中 1");
    }

    public Son(int a ){
    this(1,a);

    System.out.pritln("在子类的构造函数中 2");
    }

    public Son(){

    System.out.pritln("在子类的构造函数中 1");
    }
}
  public Class Test(){

    public void main (String [] args){

    Son s = new Son();
   
    }

 


final 关键字
当我们用final 来修饰一个类时,该类不能被继承 (叫做最终态/终态类)
方法被final修饰该方法也不能被继承,(修饰构造方法无意义,构造方法不能被继承)

final使用的几种情况
finalize()是一个方法名不是关键字,是Object的方法,用来销毁对象方法,由GC回收调用
toString()返回一个对象的字符串的描述,使用机制为:

    public String toString(){
    return this.name +"住在"+this.address;
    }

[总结] 2016.12.5 星期一