1.写出定义接口的格式
interface A{
public abstract void work();
}
注:
(1)接口的权限修饰符如果不标明,默认为default,仅可在本包中访问;
(2)接口中的方法必须为抽象方法,且public abstract可以不写,默认为public abstract.实际开发中通常写为 public void work();
(3)接口的子类叫做实现类,命名一般为接口名+Impl,如InterfaceImpl;
(4)java8中有新特性,可实现类方法(static修饰,可由接口直接调用)和默认方法(default修饰,由实现类的实例化对象调用);
2.写出实现接口的格式
实现接口的类称为实现类,格式如下:
//定义接口
interface A{
public void work();
}
//定义实现类
class B implements A{
public void work(){
System.out.println("实现类");
}
}
3.说出接口中成员的特点
接口由全局常量和抽象方法构成.全局常量由public static final修饰.如:
interface A{
public static final String str = "abc";
public void work();
}
4.接口和抽象类的区别
区别:
1)抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;接口只能包含抽象方法;
2)一个类只能继承一个直接父类(可以为抽象类),却可以实现多个接口(弥补了单继承的局限);
3)抽象类为继承体系中的共性内容,接口为继承体系中的扩展功能.
相同:
1)都位于继承的顶端,用于被其他类实现或继承;
2)都不能直接实例化对象;
3)都可以包含抽象方法,其子类必须覆写这些抽象方法
选用:
1)优先用接口,少用抽象类
2)需要定义子类的行为,又要为子类提供共×××时才选用抽象类
5.能够说出使用多态的前提条件
有继承(extends)关系或实现(implements)关系
6.理解多态的转型
举例:父类Person 子类Student
Person p = new Student();//向上转型(自动转换),转换完成后p可访问父类的成员变量,调用子类覆写的成员方法,但不能调用子类特有的成员方法
Student stu = (Student) p;//向下转型,stu可访问子类中的成员变量,可调用父类方法(继承)和子类中的所有方法