자바 기초-인터페이스
8196 단어 자바
간단 한 소개
1.1 개념
인 터 페 이 스 는 자바 에서 가장 중요 한 개념 으로 인 터 페 이 스 는 특수 한 유형 으로 이해 할 수 있 으 며 그 안 은 모두 전체 상수 와 공공 추상 적 인 방법 으로 구성 된다.만약 에 하나의 유형 이 전체 상수(static final)와 추상 적 인 방법 으로 구성 된다 면 이 를 하나의 인터페이스 인터페이스 로 정의 할 수 있 는 목적 은 자바 단일 계승 의 한계점 을 돌파 하기 위 한 것 이다.인터페이스의 장점:유연 하고 여러 인터페이스의 기능 을 동시에 사용 할 수 있다.인 터 페 이 스 는 주로 개발 규범 을 나타 낸다.
1.2 특징
인터페이스 에서 모두 추상 적 인 방법 이다.
인터페이스 키 워드 를 통 해 인 터 페 이 스 를 만 듭 니 다
인터페이스 가 자바 의 단일 상속 의 한 계 를 돌파 했다인터페이스 와 클래스 간 에 많이 실현 할 수 있 고 인터페이스 와 인터페이스 간 에 많이 계승 할 수 있다.
인 터 페 이 스 는 대외 노출 의 규칙 으로 개발 규범 이다4.567917.인 터 페 이 스 는 프로그램의 기능 확장 을 향상 시 키 고 결합 성 을 낮 추 었 다.
1.3 입문 사례
package cn.tedu.oop;
//
public class Test1_Interface {
public static void main(String[] args) {
//TODO
//9, ?-- ,
// new Demo()
//8, ,
Demo demo = new DemoImpl();
demo.eat();
demo.game();
demo.hi();
}
}
//1, ( abstract ), ( )
//3, interface , :interface
interface Demo{
//2,
abstract public void eat() ;
abstract public void game() ;
//4, jdk1.8 , static default
// static public void hi() {}
// default public void hi() {}
//5, , public abstract
// public abstract void hi() ;
void hi() ;//
}
//6, , ?--
//class Dog extends Animal{// , ,
class DemoImpl implements Demo{// , ,
//7, , , ,
@Override
public void hi() {
System.out.println("hi()...");
}
@Override
public void eat() {
System.out.println("eat()...");
}
@Override
public void game() {
System.out.println("game()...");
}
}
//abstract class DemoImpl implements Demo{// , ,
2.인터페이스의 사용법
1.인 터 페 이 스 는 하위 클래스 가 있어 야 합 니 다.하위 클래스 는 implements 키워드 에 의 해 여러 개의 인 터 페 이 스 를 동시에 실현 할 수 있 습 니 다.2.인터페이스의 하위 클래스(추상 류 가 아니라면)는 인터페이스의 모든 추상 적 인 방법 을 실현 해 야 한다.3.인 터 페 이 스 는 대상 의 다 태 성 을 이용 하여 자 류 를 이용 하여 대상 의 실례 화 를 실현 할 수 있다.4.인 터 페 이 스 는 일반적인 클래스 와 마찬가지 로 그 자체 에 도 데이터 구성원 과 방법 이 있 지만 데이터 구성원 은 반드시 초기 에 값 을 부여 해 야 합 니 다.그리고 이 값 은 더 이상 수정 할 수 없습니다.정의 하 는 방법 은 추상 적 인 방법 과 기본 적 인 방법 이 있 을 수 있 습 니 다.추상 적 인 방법 abstact 키 워드 는 생략 할 수 있 습 니 다.기본 적 인 방법 은 default 키 워드 를 가 져 가 야 합 니 다.기본 적 인 방법 은 방법론 을 가 질 수 있 습 니5.기본 방법의 호출 은 일반 방법의 호출 과 같다.
2.1 용법 테스트
package cn.tedu.oop;
//
//
// /
// (jdk1.8 )
// , public static final
// , public abstract
public class Test2_Interface2 {
public static void main(String[] args) {
//3,
Inter in = new InterImpl();
//in.age = 20; // , ---age final
System.out.println( in.age );//
System.out.println( Inter.age );// ,age static
//TODO 7,
String desc = in.save();
System.out.println(desc);
in.delete(10);
}
}
//0, interface
interface Inter{
//1, .Interfaces cannot have constructors
// public Inter() { }
//2, !!! -- public static final !!
//public static final int age = 10;
int age = 10 ; //
//4, -- public abstract
// public abstract void save() ;
// public abstract void delete() ;
String save() ;//
void delete(int id) ;
}
//5, , ,
//abstract class InterImpl implements Inter{
class InterImpl implements Inter{
//6, , . public
@Override
public String save() {
return " !" ;
}
@Override
public void delete(int id) {
System.out.println("delete()..."+id);
}
}
3 인터페이스의 복잡 한 용법
인터페이스 와 클래스 간 에 많이 실현 할 수 있 고 인터페이스 와 인터페이스 간 에 테스트 를 많이 계승 할 수 있다.
import java.io.Reader;
//
// ,
public class Test3_Interface3 {
public static void main(String[] args) {
//4,--2 , , ,
Inter2 in = new Inter2Impl() ;
in.update();
in.save();
in.delete(5);
in.get();
}
}
interface Inter1{
void save();
}
interface Inter3{
void update();
void get();
}
//5, ,
abstract class Impl2 extends Object implements Inter1 , Inter3{
}
//3, -- , ( )
//--Impl , Inter1 Inter3 ,
//-- ,
class Impl implements Inter1 , Inter3{
@Override
public void update() {
}
@Override
public void get() {
}
@Override
public void save() {
}
}
//1, -- , ( )
//--2 1 3 !
interface Inter2 extends Inter1 , Inter3{
void delete(int id) ;
}
//2, 2 ,
class Inter2Impl implements Inter2{
@Override
public void save() {
System.out.println(1);
}
@Override
public void update() {
System.out.println(2);
}
@Override
public void get() {
System.out.println(3);
}
@Override
public void delete(int id) {
System.out.println(4);
}
}
총화
1.클래스 와 클래스 간 의 관 계 는 상속 관계 자바 에 서 는 클 라 스 A extends B 만 지원 합 니 다.그 중에서 A 는 하위 클래스 이 고 B 는 부모 클래스 입 니 다.하위 클래스 는 부모 클래스 의 모든 기능 을 사용 할 수 있 습 니 다.방법의 재 작성 override:부모 클래스 의 기 존 기능 을 수정 하려 면 재 작성 할 수 있 습 니 다.2.인터페이스 와 인터페이스 간 의 관계:계승 관계 인터페이스의 등장 은 자바 단일 상속 의 한 계 를 돌파 하기 위 한 것 이다.인터페이스 간 에 많이 계승 할 수 있다.interface A extends B,C 중 A 는 하위 인터페이스 이 고 B 와 C 는 부모 인터페이스 입 니 다.A 는 B 와 C 의 모든 기능 을 가지 고 있 고 A 의 기능 이 가장 완전 하 다.class Impl implements AImpl 구현 클래스 는 A B C 인터페이스 에 있 는 모든 추상 적 인 방법 을 동시에 다시 써 야 합 니 다.그렇지 않 으 면 추상 적 인 클래스 입 니 다.3.클래스 와 인터페이스 간 의 관계:관계 실현 클래스 는 인 터 페 이 스 를 실현 할 수 있 고 class A implements B,CA 는 실현 클래스 이 며 B 와 C 는 인터페이스 이다.A 는 B 와 C 인터페이스 에 있 는 모든 추상 적 인 방법 을 동시에 다시 써 야 한다.그렇지 않 으 면 추상 적 인 클래스 는 계승 하 는 동시에 class A extends B implements C,DA 는 하위 클래스 라 고 할 수 있다.클래스 A 를 실현 하 는 동시에 부모 클래스 B 의 기능 을 가 지 는 동시에 인터페이스 C 와 D 의 기능 을 가 진 A 는 C 와 D 인터페이스 에 있 는 모든 추상 적 인 방법 을 동시에 다시 써 야 한다.그렇지 않 으 면 추상 적 인 클래스 가 부모 클래스 B 에 대한 방법 이 라 고 할 수 있 습 니까?수 요 를 보면 B 류 는 부류 이 고 그 안에 모두 일반적인 방법 이 라면 수정 이 필요 해 야 다시 쓸 수 있다.4.인터페이스 와 추상 류 의 차이 점,추상 류 와 인 터 페 이 스 는 모두 추상 층 이다.보통 공통점 을 추출 하 는 데 사용 되 는데 이들 은 서로 다른 점 구조 방법 을 예화 할 수 없다.추상 류 에 있 고 인터페이스 에 없다!구성원 변수:추상 류 에 있 고 인터페이스 에 없 으 며 인터페이스 에 상수 가 있 습 니 다.구성원 방법:추상 류 는 일반적인 방법 과 추상 적 인 방법 이 있 을 수 있 지만 인터페이스 에는 모두 추상 적 인 방법(jdk 1.8 이후 에 있 을 수 있 음)인터페이스 에 약자 형식 이 존재 하고 추상 류 에는 인터페이스 안의 상수 가 없다.int age=10.Public static final 인터페이스 에 있 는 방법 을 자동 으로 연결 합 니 다.void save()는 Public abstract 를 자동 으로 연결 하여 추상 적 인 층 을 어떻게 디자인 합 니까?추상 적 인 유형 으로 나타 나 는 것 입 니까?인터페이스 로 나타 나 는 것 입 니까?관건 은 방법 체 를 제공 할 필요 가 있 는 지 없 는 지 에 달 려 있다.만약 에 유형 안의 방법 이 모두 방법 체 를 제공 할 필요 가 없다 면 인터페이스 로 디자인 할 수 있다.만약 에 유형 안의 방법 이 방법 을 제공 해 야 한다 면 추상 류 로 디자인 할 수 있다.추상 층 은 추상 류 가 좋 은 지 인터페이스 가 좋 은 지 실현 류 가 여러 가지 기능 을 동시에 가 지 려 면 인 터 페 이 스 를 선택 하 는 것 이 좋다.인 터 페 이 스 는 많이 계승 하고 많이 실현 할 수 있 기 때문이다.추상 류 로 설계 된다 면 자 류 는 부 류 를 하나만 물 려 받 을 수 있 고 단 한 번 의 상속권 만 물 려 받 을 수 있다.
5 프로 그래 밍
수요:구체 적 인 사무:배 우 반 선생님,고수 반 선생님 의 공통점:수업 준비,강의 테스트:흔히 볼 수 있 는 다 중 대상 테스트 분석:인터페이스 프로 그래 밍 을 위 한 디자인 사상 1.자 류 를 보 는 공통성 기능 을 위로 추출 하여 부 류 를 형성 합 니 다.2.부 류 를 추출 층 으로 수식 할 까요?프로 그래 밍 의 결 과 를 보면 추상 층 은 추상 류 일 수도 있 고 인터페이스 일 수도 있다.3.추상 층 이 모두 추상 적 인 방법 이 라면 직접 인터페이스 4 로 디자인 한다.추상 적 인 것 이 일반적인 방법 이 필요 하 다 면 추상 류 로 디자인 한다.
package cn.tedu.oop;
interface Teacher {
void ready() ;
void teach() ;
}
--ActTeacher
package cn.tedu.oop;
//
// : /
public class ActTeacher implements Teacher{
public void ready() {
System.out.println(" ");
}
public void teach() {
System.out.println(" ");
}
}
--CgbTeacher
package cn.tedu.oop;
//
// : /
//6, , ,
abstract public class CgbTeacher implements Teacher{
}
--
package cn.tedu.oop;
//
public class Test4_Design {
public static void main(String[] args) {
// ,
// Teacher t = new Teacher();
// --
Teacher t = new ActTeacher() ;
// ,
t.ready();
t.teach();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.