面向对象的特征?
- 抽象
- 继承
- 封装
- 多态:不同类的对象对同一消息做出不同的响应
组合和继承的区别?
组合是has-a的关系;继承是is-a的关系
JAVA中能使用组合就尽量不要使用继承
多态的实现机制?
- 方法的重载(编译时多态):同一个类中有多个同名的方法,方法参数不同(返回值不同不行)
- 方法的覆盖(运行时多态):子类覆盖父类的方法
抽象类和接口?
抽象类:只要包含一个抽象方法的类就必须被声明为抽象类
Abstract只能用来修饰方法,不能修饰成员属性
抽象方法不能用private/static/synchronized/native等访问修饰符修饰。
抽象方法不能有方法体
接口:
成员属性默认public static final,在定义时必须初始化
方法只能用public和abstract来修饰
内部类
静态内部类:声明为static,不能调用外部类的非静态成员和方法;
成员内部类:非静态内部类中不能定义静态成员
局部内部类:定义在类方法中的类,不能被public/protected/private/static修饰,只能访问方法中定义为final的局部变量
匿名内部类:没有类名的内部类,实现或者继承某个类或接口的方法;
New WindowAdapter(){ 方法1;}
获取父类的类名?
this.getClass().getName();//获取自己的类名
this.getClass().getSuperclass().getName();//获取父类的类名