您的位置:首页 > 编程语言 > Java开发

java 抽象类与接口的异同

2015-06-07 09:39 375 查看
类型

抽象类

接口

成员变量

随意(无抽象变量)

只能是静态常量(public static final)

局部变量

随意(无抽象变量)

普通方法





类方法

没有

有方法体

抽象方法

无方法体

有方法体

默认方法

Default有方法体

内部类



内部接口和枚举

构造器

没有



初始化块

没有



内部类



继承

单继承

多继承

权限

public

Public

package sha;

abstract class fa{

public int a=1;

int b=2;

private char d='s';

abstract public void c();//抽象方法

{

System.out.println("我只是一个初始化块");

}

public fa(){

System.out.println("我是一个父类构造器");

}

public void faa(){

System.out.println("抽象类的普通方法");

}

}

interface faa{

public static final int aa=123;//变量只能是静态常量

abstract void ca();//抽象方法

public static void ca1(){

System.out.println("接口的静态方法");

}

default void ca2(){

System.out.println("接口的默认方法");

}

}

class son extends fa{//类继承类,抽象方法都要实现

public son(){

super();

System.out.println("继承父类的构造器");

}

@Override

public void c() {

// TODO Auto-generated method stub

System.out.println("我只是一个子类的实现方法");

}

}

interface sonin extends faa{//接口及承接口,抽象方法不要全实现,因为其还是接口

public void ca();

public static final int o=123;

public static void ss(){

System.out.println("我是子接口的静态方法");

}

public default void sss(){

System.out.println("我是子接口的默认方法");

}

}

class soncl implements faa{//类继承接口

@Override

public void ca() {

// TODO Auto-generated method stub

System.out.println("类继承接口的抽象方法实现体");

}

public soncl(){

System.out.println("类继承接口的构造方法");

}

{

System.out.println("类继承接口的初始化块");

}

public void asddsa(){

System.out.println("类继承接口的普通方法实现体");

}

}

class finish extends fa implements faa{

@Override

public void ca() {

// TODO Auto-generated method stub

System.out.println("类继承抽象类的抽象方法实现体");

}

@Override

public void c() {

// TODO Auto-generated method stub

System.out.println("类继承接口的抽象方法实现体");

}

}

public class asd {

public int a=12;

public static void main(String[] args) {

// TODO Auto-generated method stub

son asd=new son();

asd.c();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: