“抽象类”与“接口”有什么区别?

本文探讨了Java中抽象类与接口的区别,包括继承、方法定义、构造方法和成员变量等方面。Java中,类只能单继承但能多实现接口。抽象类可以有成员变量和构造方法,而接口中成员变量默认为常量。接口从JDK1.8开始支持默认方法。此外,还展示了如何通过抽象类和接口引用实现类的方法调用。
摘要由CSDN通过智能技术生成

1、从定义方面讲:

用abstract关键字修饰的类就是抽象类,抽象类无法实例化。

使用interface关键字定义接口。

那么“抽象类”与“接口”有什么区别呢?我们将从不同方面来进行比较:

2、从继承方面讲:只能extends继承一个类,可以implements实现多个接口

class Student extends PresonA implements PersonB,PersonC{


}

abstract class PresonA{
	//抽象方法
	public abstract void run();
	public abstract String getName();
}

interface PersonB{
	
	//抽象方法(在接口中定义抽象方法,可以不加abstract关键字)
	public void runB();
	public String getNameB();
}

interface PersonC{
	public void runC();
	public String getNameC();
}

3、从定义方法上讲:“抽象类”与“接口”都可以定义抽象方法,而在定义普通方法时,从JDK1.8开始,接口允许定义默认方法(带有方法体的方法)
 

   public default void dosth() {
        //默认方法,允许存在方法体,相当于“接口中的普通方法”
    }

4、从构造方法上讲:抽象类中可以定义抽象方法,而接口中不允许有抽象方法。

5、从定义成员变量上讲:“抽象类”可以实例化成员变量,而接口中的成员变量是“常量”,不允许修改。

public class Demo03 {
	public static void main(String[] args) {
		PresonA.max = 23;
		PresonA.max =44;
    }
}


abstract class PresonA{

    //成员"变量"
	public static int max = 45;
	
	//常量
	public static final int MAX = 45;


}


interface PersonB{

    //成员变量
	//常量  
	public static int max = 0;  //不允许修改
}

需要补充的是:

        //父类的引用,指向子类的对象
		PresonA pa = new Student();
		pa.run();
		pa.getName();
		
		//接口的引用,指向实现类的对象
		PersonB pb = new Student();
		pb.runB();
		pb.getNameB();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值