Java07/抽象类/接口

二 抽象类

1 定义格式
//抽象类
public abstract class Animal{
	//抽象方法
	public abstract void eat();
	//普通方法
	public void method(){
	}
}

注意:
抽象方法所在的类,必须是抽象类,抽象类中也可以定义普通方法。
抽象类方法中不能有方法体

2 抽象类的使用
  1. 不能用new创建抽象类对象
  2. 必须有一个子类来继承抽象类
  3. 子类必须覆盖重写抽象父类中的所有抽象方法,除非该子类也为抽象类,(去掉abstract关键字进行重写覆盖)。
  4. 抽象类中可以有构造方法,供子类创建对象时,初始化父类成员使用。
  5. 抽象类中不一定含抽象方法,但是有抽象方法的类必定是抽象类

三 接口

接口是一种多个类的公共规范,是一种引用数据类型

1 格式定义
public interface 接口名称 {
	//...
}
2 接口使用

要想使用接口,就需要一个实现类来“实现”该接口

public class 实现类名称 implements 接口{
	//...
}

注意:
接口的实现类必须覆盖重写(实现)所有的抽象方法,除非该实现类是个抽象类。

Java7,接口包含
1. 常量
2. 抽象方法

Java8,额外包含
3. 默认方法
4. 静态方法

Java9, 额外包含
5. 私有方法

3 接口中的方法及常量
1) 抽象方法
public abstract 返回值类型 方法名(参数列表);

注意:
接口中的抽象方法,修饰符必须
public abstract,可以省略。

public interface Usb {
	public abstract method3();//抽象方法
	public method2();//抽象方法
	abstract method1();//抽象方法
	void method();//抽象方法
}
2) 默认方法 default
public default 返回值类型 方法名(参数列表){
	//...
}

注意:

  1. 对于接口中的default方法,其实现类不必再重写该default方法,default用于在接口中进行添加新方法
  2. 接口中的默认方法,可以通过接口实现类对象进行调用,及覆盖重写
3) 静态方法
public static 返回值类型 方法名(参数列表){
	//...
}

注意:

  1. 不能通过接口的实现类对象调用。
  2. 通过接口名称,直接调用。
4) 私有方法

(私有方法,仅供接口内部使用)
1.普通私有方法,解决多个默认方法之间重复代码的问题

private 返回值类型 方法名(参数列表){
	//...
}
  1. 静态私有方法,解决多个静态方法之间重复代码的问题
private static 返回值类型 方法名(参数列表){
	//...
}
5) 常量
public static final 数据类型 常量名称 = 数据值;
int NUM_SUM = 13;//一般大写,用下划线分隔

注意:

  1. 接口中定义的“成员变量”必须使用public static final进行修饰,也可以省略,是默认的。
  2. 接口中的常量必须进行赋值
4 使用接口的注意事项
public class MyInterfaceImpl extends Object 
implements MyInterfaceA,MyInterfaceA{
   //...
}
  • 一个类只能继承一个父类(不写默认继承Object类),但能实现多个接口
  • 接口是没有静态代码块和构造方法的
  • 如果实现类所实现的多个接口中,存在重复的抽象方法,那么只需要覆盖重写一次即可
  • 如果实现类没有重写接口中的所有抽象方法,那么该实现类必须是一个抽象类
  • 如果实现类所实现的多个接口中,存在重复的默认方法,那么实现类必须对该默认方法进行重写
  • 一个类的父类方法接口中的默认方法产生了冲突,则优先使用父类中的方法
  • 一个抽象类可以实现若干个接口
  • 接口不能继承抽象类,但是接口可以使用extends关键字继承多个父接口
发布了54 篇原创文章 · 获赞 6 · 访问量 4829

猜你喜欢

转载自blog.csdn.net/glpghz/article/details/103204187