Java抽象类和接口的区别

来源:互联网 发布:如何在淘宝上注册网店 编辑:程序博客网 时间:2024/06/14 18:47

抽象类:

1、抽象类中可以含有构造方法。

2、抽象类可以存在普通属性方法,静态属性和方法。

3、抽象类可以存在抽象方法。

4、如果一个类里面含有抽象方法,则这个类一定是抽象类。但是抽象类不一定含有抽象方法。

5、抽象类中的抽象方法需要子类来实现,如果子类没有实现,则必须把其子类也设置成抽象类。


接口:

1、接口中只有方法的声明没有方法体。

2、在接口中只有常量。因为定义的变量在编译的时候都会默认加上public static final.

3、在接口中的方法,永远都被public来修饰。

4、接口中没有构造方法,所以不能实例化接口对象。

5、接口可以实现多继承。

6、接口中定义的方法都需要又实现类来实现,如果不能实现接口中的所有方法,则定义该类为抽象类。


接口:

package com.xaut.cherry.niukewang0702;


public interface NewInterface {
String name  = null;
private void getName(){

}


}


说明:接口的方法只能是public而且没有方法体。

package com.xaut.cherry.niukewang0702;


public interface NewInterface {
String name  = null;
void getName();
NewInterface() {
}


}

说明:接口不能有构造方法。

package com.xaut.cherry.niukewang0702;


public interface NewInterface {
String name;
void getName();
// NewInterface() {
// }


}


说明:接口中的属性是final的,需要进行初始化。


抽象类:

package com.xaut.cherry.niukewang0702;


public abstract class AbstractClass {
private String name;
public int Id;
static char sex;

AbstractClass(){//抽象类构造函数

}
    String getName();



}


说明:在定义方法时,如果没有方法体,则必须给方法定义前面添加abstract关键字。

package com.xaut.cherry.niukewang0702;


public abstract class AbstractClass {
private String name;
public int Id;
static char sex;

AbstractClass(){//抽象类构造函数

}
    String getName() {
return null;
}
    abstract int getId();
}