Java抽象类和接口的关系
接口里面的所有方法都是抽象的没有方法体
interface Inter{
public void fun();
}
抽象类可以有抽象方法,也可以有普通方法
并且抽象方法实现接口不用重写接口的方法
abstract class Abs implements Inter{
public abstract void absFun();
public void realFun(){
System.out.println("i am real function");
}
}
接口方法必须被子类重写
接口可以继承接口
//接口可以继承接口,也不需要重写
interface Inter1 extends Inter{
public void fun1();
}
下面是例子
package Main;
public class AbstractClassAndInterface {
public static void main(String[] args) {
Son1 s1 = new Son1();
s1.fun();
s1.fun1();
System.out.println("---------------");
Son2 s2 = new Son2();
s2.fun();
s2.realFun();
s2.absFun();
}
}
interface Inter{
public void fun();
}
//抽象类可以实现接口时不重写方法
abstract class Abs implements Inter{
public abstract void absFun();
public void realFun(){
System.out.println("i am real function");
}
}
//接口可以继承接口,也不需要重写
interface Inter1 extends Inter{
public void fun1();
}
//需要实现Inter1的所有方法
class Son1 implements Inter1{
@Override
public void fun() {
// TODO Auto-generated method stub
System.out.println("i am Inter's fun");
}
@Override
public void fun1() {
// TODO Auto-generated method stub
System.out.println("i am Inter1's fun1");
}
}
//可以不重写非抽象方法
class Son2 extends Abs{
@Override
public void fun() {
// TODO Auto-generated method stub
System.out.println("i am Inter's fun");
}
@Override
public void absFun() {
// TODO Auto-generated method stub
System.out.println("i am Abs's absFun");
}
}
运行结果
i am Inter's fun
i am Inter1's fun1
---------------
i am Inter's fun
i am real function
i am Abs's absFun