java中的抽象类(abstract class)和接口(interface)有什么异同

1.概念

抽象类:被abstract 修饰的类就是抽象类    如:abstract class Animal{ },抽象类的作用就是为了去让子类去继承它,提高代码重用性!

接口:我们可以把它看做是一种特殊的抽象类,接口中的所有方法都必须是抽象的,接口中的方法定义默认为 public abstract 类型,接口中的成员产量类型默认为 public static final。

2.抽象类和接口的异同点

   相同点:

  • 二者都不能实例化
  • 一个类如果继承了某个抽象类或者实现了接口,都需要对里面的抽象方法全部进行实现,否则还需被声明为抽象类。

  不同点:

 抽象类接口
实现子类使用extends关键字来继承抽象类子类使用implements关键字来实现接口
构造器抽象类中可以定义构造器接口中不可以定义构造器
成员变量抽象类中可以定义成员变量接口中的成员变量其实就是常量,默认被public、static、final修饰
方法可以有抽象方法和普通方法可以有抽象方法(默认被public、abstract修饰)和普通方法(必须声明default修饰)
静态方法抽象类中可以有静态方法JDK1.8 以后可以有静态方法

 

3.程序说明

抽象类:

abstract class Animals{
	//抽象方法
	public abstract void f1();
	//普通方法
	public void f2() {};
	protected void f3(){};
	void f4(){};
	private void f5(){};
	//静态方法
	public static void f6() {};
	
}

//不实现抽象方法,则跟着抽象
abstract class Dog extends Animals{
	
}

//实现抽象类中的方法
class Cat extends Animals{
	@Override
	public void f1() {
		System.out.println("猫会跑");
	}
}

 

接口:

interface B1{
//	接口这里的方法默认是被public修饰的
	 void f1() ;
	 //接口中可以有普通方法,但必须声明 default
	 default void f2() {
		System.out.println("我是普通方法"); 
	 }
	//静态方法
		public static void f6() {};
}
interface C{
}
class E implements B1,C{
	
// 这里如果不写public程序会报错,因为如果不写的话, f1()方法是被默认修饰符修饰的,它的访问权限小于public
	public void f1() {
		System.out.println("B接口的抽象方法在我这里实现了");
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值