抽象类与接口

本文深入探讨了面向对象编程中的抽象类与接口的概念,详细解释了抽象类的定义、使用及限制,以及接口如何弥补抽象类的不足,实现多重继承。通过示例代码,展示了抽象方法与接口方法的实现方式,对比了两者之间的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、抽象类
在面向对象领域中一切都是对象,所有的对象都是用类来描述的,但不是所有的类都可以用来描述对象,比如抽象类。

如果一个类没有具体的信息来描述对象,而需要其他更具体的子类来支撑,那么这个类就是抽象类。好比 new animal();只知道他是动物类,而不知道他具体描述的是哪些动物,也不知道这些动物长什么样,所以他就是抽象类,这时候就需要一些更具体的子类来描述他,比如猫、狗这些知道具体长相的动物。

因为抽象概念没有具体的概念,所以抽象类不能被实例化。

抽象类定义了一组抽象的方法,他需要子类来继承(extends) 他,否则他没有实际的意义。

使用抽象类应注意下面几点:

1、抽象类不能直接实例化,实例化只能有继承他的子类来完成。

2、抽象方法必须由子类来重写。(重写:返回值、方法名、形参都不能改变!只能修改方法的核心内容)

3、只要包含有一个抽象方法的类就是抽象类,他可以包含其他具体的方法,也可以没有,只有抽象方法。

4、抽象方法只能用 public 来修饰。
 

public abstract class Animal{
	//定义抽象类Animal和抽象方法cry()
	public abstract void cry(){         
	}
	//定义一个子类cat继承Animal
public class cat extends Animal{
	//在子类cat中重写抽象方法cry()
	@Override
	public void cry(){
		System.out.println("喵喵");
	}
}
	//定义一个子类dog继承Animal
public class dog extends Animal{
	//在子类dog中重写抽象方法cry()
	@Override
	public void cry(){
		System.out.println("汪汪");
	}
}
}
public class Demo {
	public static void main(String[] args) {
		//实例化cat()对象
		Animal a1 = new cat();
		//实例化dog()对象
		Animal a2 = new dog();
		//分别在子类中调用cry()方法
		a1.cry();
		a2.cry();
	}
}

二、接口

接口只是一种形式,没有具体的实现,接口中提供了一些方法来声明他是怎么工作的,也就是接口的作用。

我们通常说用类来实现接口提供的所有方法,使用implements 关键字。

接口可以看作是类的延伸,因为在 Java 中为了保证数据的安全是不能够多重继承的,也就是说一个子类只能继承一个父类,也就限制了子类功能的实现,但一个子类可以实现多个接口,不管这个接口有没有关系,所以接口可以弥补抽象类中不能多重继承的缺陷,接口和继承可以同时使用,这样既可以保证数据的安全性又可以实现更多的功能。

使用接口应该注意以下几点:

1、接口(interface)中所有方法的访问权限声明都只能用 public ,否则会报错。

2、接口中所有的方法都是抽象的,不存在实现的方法。

3、接口中只可以定义不可变的常量(public static final)

4、实现接口的非抽象类必须实现该接口的所有方法

三、抽象类与接口的区别

在抽象类中,可以定义任意范围的成员数据,也可以有非抽象方法(可以实现的方法)。在接口中,只能定义静态的,不可修改的成员数据(一般不在接口中使用成员数据),接口中的全部方法都必须是抽象的。

抽象类:

public abstract class Demo {
    abstract void method1();
    
    //可以实现
    void method2(){
    
    }
}

接口:

interface Demo {
    void method1();
    void method2();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值