抽象类:不允许实例化,可以通过向上转型,指向子类类型
抽象方法:
被子类重写
接口:不能用abstract,设置int a=1 默认为常量
区别:
1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。
接口1.8之后的方法体:实现接口后直接调用就行(用default或者static修饰)
MyInterface.java:
interface MyInterface{
String myNewName(String newName);
default String myOldName(){
return "chao";
}
}
GetName.java:
public class GetName implements MyInterface{
public static void main(String args[]){
GetName getName = new GetName();
//可以直接调用接口中的默认方法myOldName()
System.out.println("my old name is "+getName.myOldName());
String newName = "超人";
getName.myNewName(newName);
}
//只需要实现接口中没有方法体的方法即可;
public String myNewName(String newName){
System.out.println("my new name is "+newName);
return "my new name is "+newName;
}
}
运行结果:
my old name is chao
my new name is 超人
网友评论