java抽象类和接口的简介和区别

java抽象类和接口

抽象类

java中的抽象类是一个特殊的类,可以说它的存在就是为了让子类来继承的,既然涉及到继承就证明了抽象类中是有默认的构造方法的。

1.什么是抽象类

含有抽象方法的类叫抽象类,那什么又是抽象方法呢?抽象方法就是在普通类的基础增加了一个abstract关键字,并且被abstract关键字修饰的方法不能拥有方法体(不能拥有大括号)。因为抽象方法都用abstract修饰,所以抽象方法所在的抽象类也要用abstract来修饰以此来提高抽象方法的清晰度。

子类(普通子类)继承抽象父类时必须实现抽象父类中的抽象方法,如果子类也是抽象的(即抽象子类),拥有抽象父类的所有能访问到的属性以及方法(包括抽象方法)。

抽象类不能被实例化,只能被继承

注意:java只支持单继承

1.1写法
访问修饰符  abstract class 类名{

//注意声明为抽象方法后就不允许有方法体
//访问修饰符不包括private,其他三个都可以
	访问修饰符  abstract  返回值类型  方法名();//可以拥有多个方法
}
1.2 扩展

一个抽象类可以拥有零个或者是多个的抽象方法(虽然没有一个抽象方法可以通过编译,但是失去了本身的意义)。

抽象类不仅可以含有抽象方法,还可以拥有和普通类一样的普通方法、成员变量等。
例如:

public abstract class TestAbstract
{
	int age;
	abstract void fun();//default修饰
	public abstract void fun_1();//public修饰
	protected abstract void fun_2();//protected修饰

	public void f(){
		System.out.println("可以拥有普通方法");
	}

}

接口

接口可以说是一个特殊的抽象类,或者说是一个完全的抽象类(抽象类可以看做是一个半抽象类),接口中的所有方法都是抽像方法,并且默认不能拥有普通方法。

接口里面的属性默认都是public final static修饰的,并且要初始化。

接口里面的方法都是抽象用public abstract修饰,不允许用protected修饰,也可以省略public abstract

接口没有构造方法

扫描二维码关注公众号,回复: 11528805 查看本文章

一个类只能继承一个父类但是可以实现多个接口,也可以即继承父类即实现接口。

接口也不能实例化,抽象类也不能实例化。

1.1写法
interface 接口名{
   
   public final static int 属性名 = 100;
   String 属性名 = 100;//可以省略public final
   public abstract void 方法名;//没有方法体
   void 方法名;//可以省略public abstract 
   
}

注意:子类重写父类的方法以后不能抛出比父类多的异常。
实现接口示例:

public class InterfaceTest
{
	public static void main(String[] args){
		A b = new B();
		b.fun();
		b.sun();
		
	}
}

interface A
{
	public abstract void fun();
	void sun();
}

class B implements A
{
	public void fun(){
		System.out.println("实现接口A中的fun方法~~~");
	}

	public void sun(){
		System.out.println("实现接口A中的sun方法~~~");
	}

}

运行结果:
在这里插入图片描述

抽象类和接口的区别

  1. 抽象类只支持单继承,而接口可以多次实现(其实也就是相当于多继承了)。
  2. 抽象类用关键字abstract修饰,接口用interface修饰。
  3. 抽象类中可以有成员变量和成员方法,而接口中只能是抽象的方法和public final static修饰的静态常量,并且接口中的静态常量必须初始化。
  4. 抽象类使用extends关键字,而接口使用implements关键字。

猜你喜欢

转载自blog.csdn.net/qq_37823003/article/details/107689189