객체 지향 인터페이스 자바 23 개 JDK8 새로운 기능

/ *

  • JDK8 새로운 인터페이스에 제공
  • 이후 버전 인터페이스 다른 전역 상수 및 외부 캔 정의 추상 방법, 또한 기본 방법을 정의 할 수있는 정적 메소드 JDK8 구조
  • 정적 방법 : 사용하여 정적 키워드를 수정. 정적 메소드는 인터페이스를 통해 직접 불러와 방법 체를 실행할 수있다. 클래스 정적 메소드는 자주 사용하는 서로 함께 사용된다.
  • 당신은 표준 라이브러리에서 수집 / 컬렉션 또는 경로 / 인터페이스의 경로와 같은 쌍 클래스로 찾을 수 있습니다.
  • 방법 기본 : 기본 방법은 기본 키워드 수정을 사용합니다. 그것은 클래스 객체를 호출하여 달성 될 수있다. 여전히 코드의 이전 버전과의 호환성을 유지하면서 우리는 기존의 인터페이스에 새로운 방법을 제공합니다.
  • 예를 들어 : 수집, 목록, 비교기 등 풍부한 인터페이스 8 API에서 자바는 기본 방법을 제공
  • 인터페이스 정의 1, 고정 방법은 인터페이스를 호출 할 수있다. (비슷한 도구)
  • 2, 클래스 객체에 의해 구현되는 기본 인터페이스 메소드를 호출 할 수 있습니다. 다시 쓸 수있는 기본 구현 클래스의 인터페이스 방법.
  • 이 객체가 호출되면, 호출은 오버라이드 (override) 방법이다.
  • 3, 부모 클래스는 매개 변수가 충돌을 발생하지 않는 한 같은 이름을 가진 비 추상적 인 방법을 정의하는 동안 인터페이스는 기본 방법을 정의합니다. 우선 순위 클래스의 원칙 :이 시간을 준수하기에 때문에.
  • 같은 이름과 매개 변수를 기본 인터페이스 방법은 무시됩니다. 이 방법이 기본 메소드를 오버라이드 (override)하지 않는 서브 클래스의 경우 부모 클래스의 우선 순위라고합니다.
  • 서브 클래스는 방법에 우선 순위를 오버라이드 (override) - 방법 부모 - 인터페이스 방법
  • 4 인터페이스는 기본 방법을 정의하고, 같은 이름의 다른 인터페이스도 (관계없이,이 방법은 기본 방법인지 여부) 다른 방법 변수를 정의하는 경우,
  • 클래스가 구현을 동시에 두 인터페이스를 구현에있을 것입니다 : 인터페이스 충돌합니다. 해결 방법 : 인터페이스의 매개 변수와 같은 이름의 구현 클래스의 방법은 충돌을 해결하기 위해 적용해야합니다.
  • .. 매너 5, 서브 클래스의 재정의 호출 부모 클래스가 사용하는 슈퍼 () 메소드 이름의 기본 인터페이스 메소드 메소드 이름 .super 지정한 인터페이스 이름을 사용하여 전화를 ()보다 우선합니다.

* /

package object_chapter2;

public class Object_Interface_JDK8 {
 public static void main(String[] args) {
	 HighLevelTest t = new HighLevelTest();
//   t.method1();//接口中定义的静态方法不会被实现类继承,无法通过实现类的对象调用
	 HighLevel.method1();//接口中的静态方法只能被接口直接调用
	 t.method2();
	 HighLevelTest1 t1 = new HighLevelTest1();
	 t1.method2();
	 HighLevelTest2 t2 = new HighLevelTest2();
	 t2.method2();
	 System.out.println("----------------");
	 t2.method3();
			 
}
}

interface HighLevel{
	//静态方法
	static void method1() {
		System.out.println("平安无事");
	}
	//默认方法
	default void method2() {
		System.out.println("小心火烛");
	}	
}

interface HighLevel2{
	default void method2() {
		System.out.println("天下太平");
	}	
}

class SuperClass{
	public void method2() {//此处必须加public否则会报错 The inherited method SuperClass.method2() cannot hide the public abstract method in HighLevel2
//	父类同名同参方法的权限不能小于接口中的方法。
		System.out.println("阖家团圆");
	}	
}

class HighLevelTest implements HighLevel{//接口中没有抽象方法可以不用重写
	
}

class HighLevelTest1 implements HighLevel,HighLevel2{

	@Override
	public void method2() {
		// TODO Auto-generated method stub
//		HighLevel.super.method2();//指明此method2()方法调用的是HighLevel接口中的同名方法,解决冲突问题
//		HighLevel2.super.method2();//指明此method2()方法调用的是HighLevel2接口中的同名方法
		System.out.println("河清海晏");//或者重写method2()方法来解决问题
	}//接口中没有抽象方法可以不用重写
	
}

class HighLevelTest2 extends SuperClass implements HighLevel,HighLevel2{
	void method3() {
		super.method2();//调用父类中的同名方法
		HighLevel.super.method2();//调用接口HighLevel中的同名方法
		HighLevel2.super.method2();//调用接口HighLevel2中的同名方法
	}
}
게시 47 개 원래 기사 · 원 찬양 한 · 전망 1046

추천

출처blog.csdn.net/wisdomcodeinside/article/details/104430717