Java抽象类和接口

一、抽象类

abstract修饰的类称为抽象类,abstract修饰的方法叫做抽象方法,抽象方法只有声明部分,没有具体的方法体
抽象类特点与规则:

  1. 抽象类可以被继承作父类,自身不具某种功能,抽象类中的方法只会在子类中重写,用以体现功能和迎合需求。
  2. 抽象类不能被实例化,既不能使用关键字new来创建该抽象类的对象。
  3. 抽象类中可以没有抽象方法,有抽象方法的类必须为抽象类,即用abstract修饰的类。
  4. 抽象类的子类必须实现抽象类中的所有抽象方法,但若子类也是抽象类则可以不用全部实现。
  5. 一个含有抽象方法的抽象类必须至少要有一个非抽象类的子类。
  6. 抽象类中的抽象方法是多态的一种表现形式。
    在这里插入图片描述

二、接口

定义语法:
访问权限修饰符 interface 接口名 extends 接口列表{
常量;
抽象方法;
内部类;
}

接口的特点与规则

  1. 接口内只能包含常量(默认public static final修饰)、抽象方法及内部类。
  2. 接口中的抽象方法必须为public访问权限控制符,不能为其他控制符。
  3. interface前的修饰符只有public和友好的两种。
  4. 可以通过extends关键字继承其他接口,但是不能继承抽象类和普通类。
  5. 接口弥补类Java单一继承的缺点(Java中的类只能继承一个父类,父类可以有许多子类),可以继承多个父接口,他们之间用英文逗号隔开。

接口实现:
1、类可以通过implements关键字实现接口,且可以实现多个接口。接口与接口之间用英文逗号隔开。
定义语法:
2、访问控制符 修饰符 class 类名 implements 接口1,接口2,…{
变量;
方法;
}
3、如果一个类实现了一个接口,但没有实现接口中的所有抽象方法,那么这个类之能是抽象类。
4、如果多个接口中定义了相同的抽象方法,则在实现类中只实现其中一个即可。
接口回调:
接口回调描述的是一种现象:接口声明的变量指向其实现类实例化的对象,那么该接口变量就可以调用接口中的抽象方法。
接口没有构造方法,不能创建自己的对象,但是可以引用实现类的对象。

接口中常量的使用规则:
1、接口中实现类可以直接使用接口中的常量。

package m								package m
public interface IA{					public class Test implements IA{
	int TEN = 10public static void main(String [] args) {
													System.out.println(TEN);
}										}

2、接口实现类所实现的多个接口中有常量名相同的常量,则在实现类中不能直接使用,必须使用类名来确定到底调用哪个接口中的常量。

package m						package m
public interface IA{			public interface IB{
	int TEN=10;						int TEN=9}								}
package m 
public class Test implements IA{
	public static void main(String [] args) {
		//使用类名来确定哪个接口中的变量
		System.out.println(IA.TEN);
}

默认方法:
Java8以前版本中规定,接口中所定义的方法只能是抽象方法,从Java8开始,接口中可以添加一个或多个由default关键字修饰的非抽象方法,该方法又称为扩展方法,该默认方法将由接口实现类创建的对象来调用。

package m;

public  interface Idead {
	void move();
	public default void eat() {
		System.out.println("......");
	}
}

静态方法:
从Java8开始,接口中可以添加一个或多个由static关键字修饰的非抽象方法,该方法将由接口或其实现类直接调用。
注意:接口中的静态方法实现类无法继承,默认方法实现类可以继承。

三、抽象类和接口的区别

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值