>  기사  >  Java  >  Java의 추상화를 이해하는 방법

Java의 추상화를 이해하는 방법

(*-*)浩
(*-*)浩원래의
2019-05-21 15:02:493623검색

Java의 추상화를 이해하는 방법

특정 사물로부터 공통적인 측면, 본질적인 속성, 관계를 추출하고 요약하는 동시에, 개별적이고 필수적이지 않은 측면, 속성, 관계를 폐기하는 것을 추상화라고 합니다.

추상 클래스:

새 메서드를 사용하여 인스턴스화할 수 없는 클래스, 즉 특정 인스턴스 개체가 없는 클래스는 추상 클래스를 통해서만 새 하위 클래스를 파생할 수 있으며 해당 하위 클래스를 사용하여 개체를 생성할 수 있습니다.

추상 메소드:

추상 메소드는 추상으로 수정된 메소드입니다. 이 메소드는 반환된 데이터 유형, 메소드 이름 및 필수 매개변수만 선언합니다. 즉, 추상 메소드는 메소드 본체만 있으면 됩니다. 선언된 메서드가 추상 메서드인 경우 이는 이 메서드가 하위 클래스의 메서드로 재정의되어야 함을 의미합니다. 그렇지 않으면 해당 하위 클래스의 메서드는 여전히 추상입니다.

추상 클래스의 특징:

A: 추상 클래스와 추상 메서드는 추상 키워드로 수정해야 합니다.

B: 추상 클래스에는 추상 메서드가 없을 수 있지만 추상 메서드가 있는 클래스는 추상 클래스로 정의되어야 합니다.

C: 추상 클래스는 직접 인스턴스화할 수 없습니다. 하위 클래스(메서드)를 통해 다시 작성됩니다.

  • 추상 클래스에는 상위 클래스 데이터에 대한 하위 클래스 액세스를 초기화하는 생성자가 있습니다.

  • D: 추상 클래스의 하위 클래스입니다.

  • 추상 메서드를 재정의하지 않으려면 하위 클래스가 추상 클래스여야 합니다.

    구체 클래스가 되려면 모든 추상 메서드를 다시 작성해야 합니다.
  • 다음은 추상 클래스의 인스턴스입니다. :

    public class AbstractDemo {
        public static void main(String[] args) {
            //Tree t = new Tree();//抽象的子类不能实例化;Error!
            Grass g = new Grass();//非抽象类的子类实例化
            g.grow();
            System.out.println("-------------");
            Plant p = new Grass();//多态的方式
            p.grow();
        }
    }
    abstract class Plant{
        public abstract void grow();
    }
    
    /*
     * 1.子类是抽象类;
     */
    abstract class Tree extends Plant{
        Tree(){
            System.out.println("tree");
        }
    }
    
    /*
     * 2.子类不是抽象类,则必须重写所有抽象方法;
     */
    class Grass extends Plant{
        Grass(){
            System.out.println("grass");
        }
        public void grow(){
            System.out.println("grass growing");
        }
    }
추상 클래스 멤버의 기능:

A: 멤버 변수

는 변수 또는 상수일 수 있습니다. B: 생성자 메서드

는 클래스 데이터의 상위 초기화에 액세스하기 위해 하위 클래스에서 사용됩니다.

C: 멤버 메서드

는 추상적이거나 추상적이지 않을 수 있습니다.

추상 클래스 멤버 메서드 특성:

A: 추상 메서드

서브클래스가 수행해야 할 필수 요구 사항 ;B: 비추상 메서드

코드 재사용성을 향상하기 위해 하위 클래스에서 항목 상속;

다음은 추상 클래스 멤버의 예입니다.

public class AbstractMember {
    public static void main(String[] args){
        
        Phone p = new Vivo();    //这里是多态;(用来实例化抽象类)
        p.height = 1460;        //1600 -> 1460
        System.out.println(p.height);
        System.out.println(p.width);
        System.out.println("-----------");
        p.call();        //vivo call
        p.method();        //vivo method
        
        
        
    }
}

abstract class Phone{
    public int height = 1600;
    public final int width = 960;
    public Phone(){}
    public Phone(String name,int count){}
    /*成员方法*/
    public abstract void call();//抽象成员方法;
    public void method(){        //非抽象成员方法;
        System.out.println("phone method");
    }
    
}
//非抽象子类,重写抽象父类的抽象方法:
class Vivo extends Phone{
    
    public void call(){
        System.out.println("vivo call");
    }
    public void method(){
        System.out.println("vivo method");
    }
    
}

관련 학습 권장 사항:

Java 기본 튜토리얼

위 내용은 Java의 추상화를 이해하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.