获取数据类型 :1、如果是简单数据类型,需要自定义getType。 比如:
int a = 0;
System.out.println(a.getType);
public static String getType(int n){
return "int"
}
2、如果是object ,可以使用
.getClass.toString()
封装:1、属性私有 2、 统一的get set
完全封装: 1、属性私有 2、统一方式get set 3、提供无参和有参的构造函数 4、实现序列化接口
继承:子类构造函数如果第一行没有调用本类其他构造方法,则默认super()
注:构造方法只调用不继承
重写:object需要强制转化
public boolean equals(Object obj){
A a = (A) obj;
...
}
注:equal重写后应该同事重写hashcode, equal同则hashcode也相同。
多态:父类引用子类对象,则1、只能调用父类函数; 2、如果子类重写,则调用子类重写后方法 (编译器认为引用,运行器走的是对象)
Abstract:1、方法抽象则对应的类也是抽象,如果被继承,则需要重写父类的所有抽象函数。 既抽象先挖一个坑,并且要求所有子类都有自己方法补全他。2、只能通过多态,通过子类使用,不能靠new object:A a = new B() [B为抽象类]。3、不想集成抽象方法,可以全部重写抽象方法。否则必须为抽象类。
接口: 特殊抽象类,并不是真正的类。接口由类实现。implements。1、1.8 前 全部是public abstract 方法。 2、字段全是public static final 常量。
static: 1、全局变量:所有对象共享。a1,a2,a3对static操作后保留记录。若对象为null,调用一般属性、对象则空指针异常 NullPointerExcept。 2、静态类:对象为null 也能调用
final:1、初始化时就要赋值 2、方法不能重写 3、类不能继承 static final 不可变的常量和变量
内部类: 在类的内部定义类:公用数据,可在对应外部类中使用
成员内部类:public class;A a =new A() B b = a.new B()
静态内部类:public static class B b = new B()
局部内部类:
匿名内部类:无名:new 父类/父接口(){ 重写:1.8前只能使用属性或final 方法}