继承
1.子类继承父类,使用关键字"extends"
2.子类可以调用父类的属性和方法(public,protected修饰的)
子类在调用构造方法时默认调用父类的构造方法
程序块子类不能直接调用,子类执行构造方法之前,默认调用了父类的构造方法,父类的构造方法之前默认执行父类的块
3.子类可以添加独有的属性和方法
4.子类从父类继承过来的方法不能满足子类的需要,可以在子类中重写父类的方法
5.每一个类都有继承了,默认继承Object
6.继承时单继承的,但可以通过传递继承的方法实现多继承的效果
7.继承在内存中的存储形式
8.this和super的使用
this和super都是指代词,代替的是对象
this代替的是当前执行方法时的那个对象,不一定是当前类的
super代替的是当前执行方法时的对象的父类对象
都能调用一般的属性和方法,可以放在类成员的任意位置
调用一般方法时可以来回互相调用,写法编译好用,执行不通过,产生错误
可以调用构造方法,放在构造方法的第一行
this和super在构造方法中调用另一个类的构造方法不能同时出现在第一行
构造方法之间不能来回互相调用,编译不通过
方法重载overload
一个类中的一组方法
方法的名字必须相同
方法的参数列必须不一致(个数/类型/顺序)
方法重写override
产生两个继承关系的类,子类重写父类的方法
子类权限修饰符大于等于父类
父类方法是final的,子类不能重写
父类方法是static的,子类不存在重写
父类方法是abstract的,子类必须重写,否则子类也要是抽象类
返回值类型子类小于等于父类
名字和参数子类与父类的一致
父类方法抛出运行时异常时子类不予理会
父类方法抛出编译时异常时,子类抛出异常个数小于等于父类,子类抛出异常类型小于等于父类
Object的常用方法
Object object = new Object();
//打印输出是将对象变成字符串
// 获取类的名字 hashCode的十六进制
//return getClass().getName() + "@" + Integer.toHexString(hashCode());
object.toString();
//将对象在内存中的地址经过计算得到整数
object.hashCode();
//比较两个对象的内容
//return (this == obj);
//==可以比较基本数据类型(比较值),可以比较引用数据类型(比较地址)
//equals方法是Object类中继承过来的方法,默认效果比较地址,如果想要改变比较规则,可以重写方法
object.equals(object);
//获取对象对应类的类映射(反射)
object.getClass();
//线程进入挂起等待状态,存在方法重载
try {
object.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
//线程唤醒
object.notify();
//唤醒所有
object.notifyAll();
//权限修饰符是protected,在对象被GC回收时默认调用执行的方法
//protected void finalize() throws Throwable { }
//权限修饰符是protected,为了克隆对象
//protected native Object clone() throws CloneNotSupportedException;