day13-面向对象(下)-2
1、abstract 能修饰哪些结构? 修饰以后,有什么特点?
(1)可以修饰类,该类为抽象类,不能被实例化。
(2)可以修饰方法,该方法为抽象方法,不能有方法体,只定义了一种功能的标准。
2、接口是否能继承接口? 抽象类是否能实现(implements)接口? 抽象类是否能继承非抽象的类?
接口可以继承接口
抽象类可以实现接口
抽象类可以继承非抽象的类
3、声明抽象类,并包含抽象方法。测试类中创建一个继承抽象类的匿名子类的对象
public abstract class Person{
abstract void eat();
}
public class PersonTest{
public static void main(String args[]){
//匿名子类的对象
new Person(){
public void eat(){
System.out.println("吃饭");
}
};
}
}
4、抽象类和接口有哪些共同点和区别?
区别:
(1)抽象类用abstract关键字修饰,接口用interface关键字修饰
(2)继承抽象类用extends关键字,实现接口用implements关键字
(3)JDK1.8之前,接口中只能包含常量和抽象方法,JDK1.8之后,接口中还可以包含静态方法和默认方法,抽象类中可以包含属性、方法、构造器、代码块、内部类
(4)子类只能直接继承一个抽象父类,但是可以实现多个接口
共同点:
(1)抽象类和接口都不可以被实例化
5、如何创建静态成员内部类和非静态成员内部类的对象?
public class InnterClassTest{
public static void main(String args){
//创建静态成员内部类的对象
InnterClassTest.AA aa = new InnterClassTest.AA();
//创建非静态成员内部类对象
InnterClassTest.BB bb = new InnterClassTest().new BB();
}
//静态成员内部类
static class AA{
}
//非静态成员内部类
class BB{
}
}