接口与抽象类
自己对抽象类和接口的区别进行了总结。
首先来看抽象类
public abstract class Test01 {
public int x=1;
public Test01(){
System.out.println("无参构造方法");
}
public Test01(int x){
this.x=x;
System.out.println("有参构造方法"+this.x);
}
public abstract void open();
public void test01() {
System.out.println("abstract中的普通方法");
}
private void test02() {
System.out.println("abstract中的普通方法");
}
}
抽象类: 1.抽象类中可以有普通方法和普通变量 2.抽象方法必须为public或者protected修饰 3.抽象类中的普通变量和普通方法可以为私有的 但毫无意义 4.一个类继承于一个抽象方法后,则子类必须实现父类的所有抽象方法,如果没有实现父类的抽象方法,则必须将子类定义为抽象类 5.抽象方法中可以有构造方法(无参,有参均可)
其次来看接口
public interface Test01 {
int x=10;
public void test01();
public void test02();
}
接口: 1.接口中可以定义变量,但会被隐士的指定为public static final,并且只能用public static final 2.接口中可以定义方法,但会被隐士的指定为public abstract 3.由此可以看出接口中的方法必须是抽象方法,一般情况下 不在接口定义变量 4.接口与接口之间为继承关系,接口与普通类之间是实现关系,如果一个类实现了一个接口,则必须重写这个接口里面的所有方法
基本的区别总结完毕,相同点想必大家也都了解,不管是抽象类还是接口都是不能实例化对象的,这就是最大的相同点。
|