抽象类与接口区别

抽象类:
抽象类无法实例化(即不能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 stub
    int 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类型的;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值