1. 接口
作为一种约定,约定某些类必须有接口中定义的方法,方法在类中重写实现。
接口定义与类相似,把class 换成 interface。但是接口中没有属性,只有空方法(没有方法体)。
public interface A{
public void aHello(); // 空方法
}
public interface B{
public void bHello(); // 空方法
}
public class ABClass implements A, B{
@Override
public void ahello(){
sout("a hello");
}
@Override
public void bHello(){
sout("b hello");
}
}
2. 对象与引用类型转换
1)子类转父类
Parent p = new Parent(); Child c = new Child(); p = c; // 把c 当 p来用。
2) 父类转子类,需强制转换,能否转换成功需要看父类引用的到底是哪个对象。失败时抛出ClassCastException异常。
c = (Parent) p;
3) 没有继承关系的2个类,互相转换会失败(即使继承了同一个父类)。
4)实现类转接口:
interface A; class AClass; AClass aClass = new AClass(); A a = aClass;
5) 接口转实现类: 强制转换。
6) instanceof: 判断某对象是属是某类型或某类型的子类。
3. 方法重写
子类重新实现父类的对象方法。又称覆盖,override。不需要加@Override
4. 多态
操作符:+算法运算,字符串连接
类:父类引用指向不同子类对象,调用方法时有不同表现。
5. 隐藏:子类覆盖父类的类方法, 在子类中重新实现相同的类方法。
6. super: 相当于父类的名称。可直接调用父类的构造方法及对象方法
7. Object: 所有类的父类。声明类时默认继承。
toString(): 返回当前对象的字符串表达
finalize(): JVM调用,用于垃圾回收。当对象没有引用指向时。
equals(): 判断2个对象内容是否相同。 public boolean equals(Object o){ if ( o instance of Type){ Type t = (Type) o; return this.attr == t.attr; } return false; }
==: 不是Object的方法,用于判断2个引用是否指向同1个对象。
hashCode(): 返回对象的hash值。
线程同步: wait(), notify(), notifyAll()
getClass(): 返回一个对象的类对象
8. final
1) 修饰类时,表示类不能被继承
2) 修饰方法时,表示方法不能被重写
3) 修饰基本类型变量,变量只能赋值1次
4) 引用,引用只能指向对象一次
5) 常量, 可以公开直接访问不会变化的值。 public static final int age = 100;
9. 抽象类
类中有空方法(没有实现体)称为抽象方法,有抽象方法时需声明为抽象类。抽象使用abstract修饰。public abstract class, public abstract void function().
抽象类不能直接实例化。
抽象类:子类只能继承1个抽象类;可定义public/protected/package/private,静态/非静态属性,final/非final属性。
接口:子类可以继承多个接口,属性只能是public 静态 final形式的。默认为public static final。
抽象类和接口都可以有实体方法。
10. 内部类
1) 非静态内部类: 以外部类实例化为基础。
public class A{ class B{ } }
A a = new A(); B b = a.new B();
2) 静态内部类: 不以外部类实例化为基础。
public class A{ static class B {} }
A.B b = new A.B();
3) 匿名类, 声明时(含抽象类、接口)即实例化,没有命名。使用外部的局部变量必须修饰为final
public abstract class A{ }
A a = new A(){ //A内部的abstract方法}; //必须以;结尾
4) 本地类: 有名字匿名类
public abstract class A{}
class B extends A {}
B b = new B();
11. 默认方法
在接口中实现具体方法,用default修饰。即 default public void method(){}