您的位置:首页 > 其它

抽象类与接口区别

2016-07-16 10:53 190 查看
抽象类:

抽象类无法实例化(即不能new)。使用抽象方法,该方法是只需声明不需要实现。抽象方法需要定义在抽象类中,一个类包含抽象方法,这个类一定是抽象类。如果某个类是抽象类,他可以有具体方法(有声明,有实现),也可以有抽象方法。子类继承父类(该父类为抽象类)就要实现该父类的所定义的所有抽象方法,否则该子类也要定义为抽象类。抽象类中的变量可以只定义不赋值(static)。并且可以在子类中更改。抽象方法默认为public ,需要在方法前面加入abstract。抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

代码:public class main{

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub


// b b=new b();

// b.a();

c c=new c();

c.c();

}


}
abstract class a{

private int a;

abstract void a();

void ss(){

System.out.println(“haha”);

}
}
abstract class b extends a{

abstract void c();

void d() {

}
}
class c extends b{

@Override

void c() {

// TODO Auto-generated method stub

System.out.println(“ccc”);

}
@Override
void a() {
// TODO Auto-generated method stub
}


接口:

接口里的方法不能实现,只能声明是;而接口的属性不但要定义,还要赋值,。抽象类实现接口不需要实现接口里面的方法。而普通类实现接口就要实现接口里面的所有方法。接口可以多实现,但类只能单继承,接口是为了弥补单继承的缺点。接口中的方法只能为public,接口中可以定义“成员变量”,或者说是不可变的常量,因为接口中的“成员变量”会自动变为为public static final。可以通过类命名直接访问:ImplementClass.name。

代码:public class jiekou {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stubint aa;
c c=new c();
//c.number=12;
//c.c();
c.d();
}


}
interface a{

String a=”asd”;

void a();

void c();

}
abstract class b implements a{

int number=12;

int a=0;

abstract void d();

}
class c extends b{

@Override

void d() {

// TODO Auto-generated method stub

System.out.println(number+” “+a);

}
@Override
public void a() {
// TODO Auto-generated method stub

}@Override
public void c() {
// TODO Auto-generated method stub
}


}
两者的区别:

1.抽象类是对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部行为进行抽象。

2.一个类只能继承一个抽象类,而一个类却可以实现多个接口。

3.抽象类中的方法可以实现,但接口中的方法只能声明不能实现。

4.抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  接口与抽象类