자바 추상 류 와 일반 류 의 차 이 를 상세히 해석 하 다.

추상 류
대상 을 대상 으로 하 는 개념 에서 모든 대상 은 유형 을 통 해 묘사 되 지만 반대로 모든 유형 이 대상 을 묘사 하 는 것 이 아니다.만약 에 한 유형 에 구체 적 인 대상 을 묘사 할 충분 한 정보 가 없다 면 이런 유형 은 추상 적 인 유형 이다.
여 기 를 보면 이해 하기 어 려 울 수도 있 습 니 다.예 를 들 어 동물 하면 무엇 을 생각 하 십 니까?고양이,개,닭,오리,거위?물론 이것들 은 모두 가능 합 니 다.그러면 동물 이라는 두 글 자 를 구체 적 인 대상 을 확정 할 수 있 습 니까?분명히 안 됩 니 다.심지어 더 엄격 한 의미 에서 고양이 하면 무엇 을 생각 하 십 니까?귤 고양이
필경:
천 명의 마음속 에 천 명의 햄릿 고양이 가 있다.
그래서 우 리 는 디자인 에서 동물 류 는 추상 류 로 디자인 할 수 있 고 특정한 종 류 는 동물 류 를 계승 하여 실현 할 수 있다.
다 태 라 는 부분 을 나 는 오랫동안 이 해 했 는데 어느 날 갑자기 사용 하 게 되 었 다.이른바 부계 인용 이 자 류 대상 을 가리 키 는 것 이 무슨 뜻 인지 알 게 되 었 다.그러나 앞 에 쓴 것 을 보 니 자신 이 알 게 되 었 고 말 하 는 것 이 여전히 모호 하 다.다 태 는 정말 중요 하고 중요 한 점 이다.이 부분 을 잘 이해 해 야 한다.
추상 류 와 일반 류 의 차 이 는 무엇 입 니까?
추상 류 의 문법 규칙
추상 류 의 문법 규칙:abstract키워드 수식
1.추상 류 는 예화 되 어 서 는 안 된다.
2.추상 류 는 추상 적 인 방법 이 있 을 수 없다.
3.한 가지 유형 에서 추상 적 인 방법 이 있다 면 이런 유형 은 반드시 추상 적 인 유형 이다.
4.추상 류 에 일반 속성,방법,정태 속성 과 정태 방법 이 존재 할 수 있다.
5.추상 류 에 구조 방법 이 존재 할 수 있다.

public abstract class AbstractObject{
	//     
    String name;
	//     
    public AbstractObject(String name) {
        this.name = name;
    }
    //      -     
    public static void staticMethod(){
        System.out.println("          .");
    }
	//     
    public abstract void move();
	//     
    public void commonMethod(String food){
        System.out.println("          .");
    }
}
추상 류 는 예화 할 수 없다.
이 부분 은 결론 을 잠시 기억 할 수 있 습 니 다.전체 과정 은 잠시 뒤에 보충 할 수 있 습 니 다.제 학습 경험(기초 가 폭발 할 정도 로 부족 합 니 다)에 따라 이 부분 을 직접 보면 멍 합 니 다.
동물 의 추상 류 를 정의 하려 면 동물 이 움 직 여야 지(아니 야!)그래서 공 통 된 move()방법 을 정의 합 니 다.

public abstract class Animal {
    String name;
    public Animal(String name) {
        this.name = name;
    }
    public abstract void move();
}
제 가 IDEA 로 예 시 를 썼 을 때 두 번 째 상황 이 나 타 났 어 요!귀신 이 곡 할 노 릇 이 군.추상 류new나 왔 어!

public class Test {
    public static void main(String[] args) {
    	//         !         !
        //    : 'Animal' is abstract; cannot be instantiated
        Animal animal = new Animal("  ");
        //      
        Animal animalObjcet = new Animal("  ") {
            @Override
            public void move() {
                System.out.println("      !");
            }
        };
    }
}
두 번 째 상황 에 대한 해석-확장 지식:익명 내부 클래스(건 너 뛸 수 있 음)
여기 에는 익명 내부 류 라 는 지식 이 언급 되 어 있다.
익명 내부 클래스 의 형식 은 다음 과 같 습 니 다.

new        (){
	    ;
}
//        ,              
new Animal("  ") {
    @Override
    public void move() {
        System.out.println("      !");
    }
};
익명:이 종 류 는 이름 이 없습니다.
내부 클래스:특정한 내부 에 존재 하 는 클래스.
그것 은 실제로 Animal 추상 류 를 계승 하고 실현 한 하위 클래스 이다.즉,여 기 는 Animal 류 를 실례 화 한 것 이 아니 라,이 간편 한 문법 은 우리 가 다음 과 같은 문법 을 쓴 것 과 같다.

public class AnimalObject extends Animal{
    public AnimalObject(String name) {
        super(name);
    }
    @Override
    public void move() {
        System.out.println("         !");
    }
}

public class Test {
    public static void main(String[] args) {
        AnimalObject animalObject = new AnimalObject("          ");
        animalObjcet.move();	//          !
    }
}
추상 류 의 하위 클래스
주의:여기 서 강조해 야 할 부분 이 있 습 니 다.추상 류 의 방법 에 대해 우리 의 용 어 는 실현 되 어야 합 니 다.이미 실 현 된 방법 에 대해 우리 의 용 어 는 다시 쓸 수 있 습 니 다.뒤에 써 보 니 앞에서 설명 하 는 과정 에서 제 가 사용 하 는 단 어 는 모두 다시 써 서 수정 되 었 습 니 다.
오류 쓰기:추상 클래스 의 추상 적 인 방법 을 다시 쓰 지 않 습 니 다.
정확 한 쓰기:추상 류 의 추상 적 인 방법 을 실현 하지 않 습 니 다.
다시 한 번 덧 붙 입 니 다:다시 쓰 는 것 도 잘못 이 라 고 할 수 없 는 것 같 습 니 다.IDEA 가 자동 으로 생 성 하 는 데 도@Override 주석 이 추가 되 어 있 습 니 다.더 이상 수정 하지 않 겠 습 니 다.
1.추상 류 중의 추상 적 인 방법 을 실현 하지 않 는 다.
추상 류 중의 추상 적 인 방법 을 다시 쓰 지 않 을 때 자 류 는 반드시 추상 류 일 것 이다.(추상 적 인 방법 이 있 는 종 류 는 반드시 추상 류 일 것 이다)

public abstract class AbstractCat extends Animal{
    Integer weight;
    public AbstractCat(String name, Integer weight) {
        super(name);    //        
        this.weight = weight; //      
    }
    //        ,        
    public abstract void move();
    //   :             !       .
    // public void move(){};
}
2.추상 류 중의 추상 적 인 방법 을 실현 한다.
추상 류 중의 모든 추상 적 인 방법 을 실현 한 후에 현재 의 고양이 류 는 보통 류 가 될 수 있다.

public class Cat extends AbstractCat{
    public Cat(String name, Integer weight) {
        super(name, weight);
    }
    @Override
    public void move() {
        System.out.println("       " + weight + "kg " + name);
    }
}
테스트 해 보기:

public class Test {
    public static void main(String[] args) {
        Cat cat = new Cat("  ", 20);
        cat.move();	//        20kg   
    }
}
자,여기까지.당신 만 의 귤 고양이 가 드디어 뛰 기 시 작 했 습 니 다!
추상 적 인 방법의 연장 에 대하 여
나 는 많은 문장 을 보면 하위 클래스 를 다시 써 야 한다 고 말한다.여기 서)아버지 류 의 추상 적 인 방법,추상 적 인 방법 으로 정정 합 니 다.그러면 제 가 일부 추상 적 인 방법 만 실현 한다 면 요?
STEP 1:동물 류 개조

public abstract class Animal {
    String name;
    public Animal(String name) {
        System.out.println("         !");
        this.name = name;
    }
    //          
    public abstract void move();
    public abstract void eat();
    public abstract void sleep();
}
두 번 째 단계:AbstractCat 류 에서 일부 추상 적 인 방법 을 실현 한다.

//     abstract       
// Class 'AbstractCat' must either be declared abstract or implement abstract method 'move()' in 'Animal'
public abstract class AbstractCat extends Animal{
    Integer weight;
    public AbstractCat(String name, Integer weight) {
        super(name);
        System.out.println("           !");
        //        
        this.weight = weight; //      
    }
    @Override
    public void eat() {
        System.out.println(this.name + "    ");
    }
    @Override
    public void sleep() {
        System.out.println(this.name + "   !");
    }
}
STEP 3:캣 류 등장

public class Cat extends AbstractCat{

    public Cat(String name, Integer weight) {
        super(name, weight);
    }
    /*
    sleep   eat            ,            move           .
	*/
    @Override
    public void move() {
        System.out.println("  " + weight + "kg " + this.name + "      ");
    }
}
작은 매듭
1.일반 류 는 실례 적 으로 호출 할 수 있 지만 추상 류 는 안 된다.추상 류 는 하나의 개념 일 뿐 구체 적 인 대상 으로 투사 할 수 없 기 때문이다.
2.일반 류 와 추상 류 는 모두 계승 할 수 있 지만 추상 류 가 계승 되면 자 류 는 추상 류 중의 모든 추상 적 인 방법 을 다시 써 야 한다.그렇지 않 으 면 자 류 는 추상 류 가 되 어야 한다.
참조 및 확장 읽 기
자바 기초 시리즈 1 탄 방법 재 업로드 와 방법 재 작성 의 차이
자바 기초 시리즈 2 탄 의 자바 다 중 멤버 접근 특징
자바 기초 시리즈 제3 탄 의 조작 문자열 의 종 류 는 어떤 것들 이 있 습 니까?차이 가 뭐 예요?
자바 추상 류 와 일반 류 의 차 이 를 상세 하 게 설명 하 는 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 추상 류 와 일반 류 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기