1.abstract 能修饰哪些结构? 修饰以后,有什么特点?
类、方法。
类不能实例化,需要提供子类
抽象方法,只定义了一种功能的标准。具体的执行,需要子类去实现。
具体的看我的这篇文章:abstract关键字的使用
2.接口是否能继承接口? 抽象类是否能实现(implements)接口? 抽象类是否能继承非抽象的类?
能,能,能
3. 声明抽象类,并包含抽象方法。测试类中创建一个继承抽象类的匿名子类的对象
abstract Aa{
public abstract void m();
}
public static void main(String[] args) {
AA a = new AA(){
public void m(){
}
};
a.m();
}
/*class Person{
String name;
public void eat(){}
}
public static void main(String[] args) {
Person p = new Person(){
public void eat(){}
};
p.eat();
}*/
4. 抽象类和接口有哪些共同点和区别?
4.1相同点:
不能实例化,都可以被继承
4.2不同点:
4.2.1抽象类:
有构造器,只能单继承。
4.2.2接口:
不能声明构造器,可以多继承
JDK7及以前:只能定义全局常量和抽象方法
全局常量:public static final的.但是书写时,可以省略不写
抽象方法:public abstract的,但是书写时,可以省略不写
JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法
5. 如何创建静态成员内部类和非静态成员内部类的对象?
//创建Police实例(静态的成员内部类)
Person.Police police = new Person.Police();
//创建FireMan实例(非静态的成员内部类)
Person p = new Person();
Person.FireMan fireman = p.new FireMan();