接口

  • 接口使用interface来定义
  • Java中,接口和类是并列的两个结构
  • 如何定义接口:定义接口中的成员
    • JDK7及以前: 只能定义全局常量和抽象方法
      • 全局常量: public static final的
      • 抽象方法: public abstract的
    • JDK8: 除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法(暂略)
  • 接口中不能定义构造器!意味着接口不可以实例化
  • Java开发中, 接口通过让类去实现( implements )的方式来使用。如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以实例化。如果实现类没有覆盖接口中所有的抽象方法,则此实现类仍为一个抽象类
interface Flyable{
	public static final int MAX_SPEED = 7900;
	int MIN_SPEED = 1;//省略了public static final
	
	public abstract void fly();
	void stop();//省略了public abstract
}

interface Attackable{
	public abstract void attack();
}

class Bullet extends Object implements Flyable,Attackable{
	public void attack() {	
	}
	
	public void fly() {
	}
	
	public void stop() {
	}
	
}
  • Java类可以实现多个接口 —>弥补了Java单继承性的局限性
    格式: class AA extends BB implements CC,DD,EE…
  • 接口与接口之间可以继承,而且可以多继承
  • 接口的具体使用,体现多态性
  • 接口,实际上可以看做是一种规范

Java 8中接口的新特性:

package com.atguigu.java;


public class SubClassTest {
	public static void main(String[] args) {
		SubClass c = new SubClass();
//		c.method1();//The method method1() is undefined for the type SubClass
//		SubClass.method1();//The method method1() is undefined for the type SubClass
		
		//接口中定义的静态方法,只能通过接口来调用
		CompareA.method1();
		
		//通过实现类的对象,可以调用接口中的默认方法
		//如果实现类重写了接口中的默认方法,调用时,仍然调用的是重写以后的方法
		c.method2();//SubClass: B
		
		//如果子类(或实现类)继承的父类和实现的接口声明了同名同参数的方法
		//那么子类在没有重写此方法的情况下,默认调用的是父类中同名同参数的方法--->方法的类优先原则
		c.method3();//SuperClass: C
		c.myMethod();
		
		
	}
}

class SubClass extends SuperClass implements CompareA{
	public void method2() {
		System.out.println("SubClass: B");
	}
	
	//在子类的方法中调用父类(接口)中被重写的方法
	public void myMethod() {
		super.method3();//父类
		CompareA.super.method3();//接口
	}
	
	
}

interface CompareA{
	public static void method1() {
		System.out.println("A");
	}
	
	public default void method2() {
		System.out.println("A");
	}
	
	default void method3() {
		System.out.println("A");
	}
	
}

class SuperClass{
	public void method3() {
		System.out.println("SuperClass: C");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值