(1.1.15) 대상 구성원 변수의 구조 함수와 대상 구조 함수의 집순 및Static,final,abstract,interface

10961 단어
  • 1-실행 순서 우선순위 정적 블록 정적 구성원 비정적 블록 비정적 구성원 대상 구성원 변수의 구조 함수 대상 구조 함수
  • 2-Static의 역할
  • 3-final의 역할
  • 4-final static의 역할
  • 5-Abstract 수식자
  • 6-interfacejava
  • static 전역 변수와 일반 전역 변수는 어떤 차이가 있습니까? static 국부 변수와 일반 국부 변수는 어떤 차이가 있습니까? static 함수와 일반 함수는 어떤 차이가 있습니까?
  • 1. 실행 순서 우선순위: [정적 블록, 정적 구성원] > [비정적 블록, 비정적 구성원] > 대상 구성원 변수의 구조 함수 > 대상 구조 함수


    변수의 우선순위 > 방법의 우선순위 정적 > 비정상적인 블록과 구성원 변수의 순서는 코드의 선후 순서에 따른다
    실질적으로는 기본 구조 방법을 먼저 호출한 다음에 은밀한 슈퍼 () 또는this를 실행하여 부류로 돌아가면 구조 함수의 방법체가 실행을 정지합니다.그리고 부류의 모든 실행이 끝난 후에 부류로 돌아가 코드 블록과 구성원 변수를 초기화한 다음에 함수 방법체를 구성한다
    public class Person {
    
        public Person(int id) {
            System.out.println("person(" + id + ")");
        }
    
        public static void main(String[] args) {
            Build b = new Build();
        }
    }
    
    class Build {
        Person p1 = new Person(1);
    
        public Build() {
            System.out.println("this is build's block!");
            Person p2 = new Person(2);
        }
    
        Person p3 = new Person(3);
    
    }

    구조기로 클래스와 변수를 초기화하는 순서를 설명하고 싶습니다. 이 프로그램의 출력: person (1) person (3) this is build's Block!son(2)설명: 변수를 어디에 두든지 임의의 방법의 집행 전에 집행한다. 구조 방법을 포함하고 구조 방법은 반드시 집행해야 하는 방법으로 표시할 필요가 없는 호출이다.또한 변수가 어디에 분포하든지 방법 외부에 있으면 반드시 방법보다 먼저 초기화된다.
    public class Person {
    
        public Person(int id) {
            System.out.println("person(" + id + ")");
        }
    }
    
    class Build {
    
        /* */
        static{
            System.out.println("this is static block!");
        }
        /* */
        {
            System.out.println("this is non-static block!");
        }
        static Person p1 = new Person(1);//------------1-----------
    
        public Build() {
            System.out.println("this is build's block!");
            Person p2 = new Person(2);
        }
    
        Person p3 = new Person(3);
    
        public static void main(String[] args) {
            Build b = new Build();
        }
    }

    this is static block! person(1) this is non-static block! person(3) this is build’s block! person(2)
    Class A{
     A(){cout<<"A.A Called"}
     A(int i){this(); cout<<"A.A(int) Called"}
    }
    
    Class B{
        int i=f();
        int j;
        {
            j=37;
            Cout<<"Block executed"
        }
        B(){
            this(10);
            cout<<"B.B() called"
            }
        B(int i){
        super(i);
        cout<<"B.B(int) called";
            }
        int f(){
        cout<<"B.f() called";
        return 37;
        }
        Static{
            Cout<<" Static Block executed"
        }
    }
    
     :
    B b=new B();
  • 구조 방법 B()를 호출하고 그 중의 슈퍼() 또는this()를 실행하며 진정한 방법체를 실행하지 않습니다.이때this(10)를 실행하고 B(int i) 구조 방법으로 넘어갑니다
  • 구조 방법 B(int i)를 호출하고 그 중의 슈퍼()나this()를 실행하며 진정한 방법체를 실행하지 않습니다.이 때 슈퍼 (i) 를 실행하고 부류의 A (int i) 구조 방법으로 이동해야 합니다
  • 구조 방법 A (int i) 를 호출하고 슈퍼 () 또는this () 를 실행하며 진정한 방법체를 실행하지 않습니다.이때this()를 실행하고 A() 구조 방법으로 이동
  • 구조 방법 A()를 호출하고 그 중의 슈퍼() 또는this()를 실행하며 진정한 방법체를 실행하지 않습니다.이 때 부류가 없습니다. A () 방법체를 실행하기 전에 구성원 변수와 코드 블록을 실행합니다.
  • A에 구성원 변수가 없으며 이 단계가 완료됨
  • A()를 실행하는 방법체, 출력 "A.A called"
  • A(int i)를 실행하는 방법체, 출력 "A.A(int) called"
  • 하위 클래스 B로 회귀하여 구조 방법 방법체를 준비하기 전에 실행 구성원 변수와 코드 블록
  • [정적]> 비정적입니다.출력 Static Block executed
  • B.i 초기화, 출력 "B.f() called"
  • j 초기화
  • 코드 블록 출력 "Block executed"
  • B(int i)를 실행하는 방법체, 출력 B.B(int) called
  • B()를 실행하는 방법체, 출력 "B.B() called"
  • 2-Static의 역할

  • Static는 코드 블록에 작용한다. 정적 코드 블록(static field를 초기화할 수 있고 비static field를 초기화할 수 없다. 초기화는 클래스가 불러올 때만 실행한다.
  • methods에 Static 사용
  • Static 방법은 static 방법에만 접근할 수 있고 비static 방법
  • 에는 접근할 수 없음
  • Static 방법은 static field에만 액세스할 수 있고 비static field
  • 에는 액세스할 수 없습니다.
  • 비static 방법은static fields와static methods
  • 에 접근할 수 있습니다
  • Static method의 두 가지 접근 방식 oject.method class.method, static method가 아닌 Object만 있습니다.method 접근 방식
  • Static method에서 this 및 super가 지원되지 않음
  • 한 방법 앞의 수식자가private나static일 때 시스템은 자동으로 방법 앞에final을 추가하기 때문에 이 방법은 계승될 수 있지만 다시 쓸 수 없다.
  • Static은 국부 변수로 사용할 수 없습니다(국부 변수는 함수급 국부 변수와 블록급 국부 변수 포함)
  • Static이 변수에 작용
  • 대상의 메모리에서 공간을 차지하지 않고 여러 대상이 하나의 공간을 공유한다.
  • 여러 실례 대상이 공유되어 변경할 수 있음
  • 초기화는 클래스가 불러올 때만 한 번 실행됩니다.
  • -

    3-final의 역할


    final 클래스는 계승할 수 없습니다. 하위 클래스가 없습니다.final 클래스의 방법은 기본적으로final입니다.final 방법은 이불류의 방법으로 덮을 수 없지만 계승할 수 있습니다.final 구성원 변수는 상수를 표시하며 한 번만 부여받을 수 있으며 부여 후 값은 변하지 않습니다.java는 데이터 구성원을final로 표시하지만 초기 값을 부여하지 않습니다.단, blankfinals는 사용하기 전에 초기화해야 하며, 구조 함수에서 초기화해야 하며, 구조 방법을 수식하는 데 사용할 수 없습니다.주의: 부모 클래스의private 구성원 방법은 클래스 방법으로 덮어쓸 수 없기 때문에private 형식의 방법은final 형식으로 기본적으로 설정됩니다.
    public class sa {
    
          final int i; //1、 
    
        public sa(int x) {
            this.i=x;    //2、 , 
        }
        public void doSomething() {
           final int cc;
            System.out.println( i);
           // System.out.println( cc); //3、 , cc 
        }
    
        }

    4-final static의 역할

  • 변수에 대해 일단 값을 주면 수정할 수 없고 클래스 이름을 통해 접근할 수 있음을 나타낸다.
  • 방법에 대해 덮어쓸 수 없고 클래스 이름을 통해 직접 접근할 수 있음을 나타낸다.
  • static과final에 의해 수식된 실례 상수에 대해 실례 자체는 바꿀 수 없지만 일부 용기 유형(예를 들어 ArrayList,HashMap)의 실례 변수에 대해서는 용기 변수 자체를 바꿀 수 없지만 용기에 저장된 대상을 수정할 수 있다는 점은 프로그래밍에 많이 사용된다.

  • 5-Abstract 수정자

    public class B extends A {
    
        @Override
        void a() {
            System.out.println();
        }
    
    }
    abstract class A {
    
        abstract void a();
        void b(){
    
        }
    }
    
  • Abstract class 이 클래스는 대상을 실례화할 수 없음
  • Abstract class 이 클래스는 abstract method를 포함하지 않을 수 있지만 abstract method만 있으면 이 클래스는 abstract class
  • 여야 합니다.
  • Abstract method 이 방법에는 방법체가 없으며 override
  • 가 필요합니다.
  • Abstract class의 하위 클래스는 부모 클래스의 모든 abstract method를 실현하거나 abstract class
  • 를 실현한다.
  • Abstract는 필드를 수식할 수 없음
  • Abstract는 국부 변수를 수식할 수 없음(방법급 국부 변수(형삼급 국부 변수, 방법체급 국부 변수) 또는 블록급 국부 변수)
  • 6-interface[java]


    인터페이스로 성명된 클래스는 인터페이스로 추상 클래스보다 더 추상적인 메커니즘이다.인터페이스에서 우리는 어떠한 실현도 제공할 수 없다. 모든 방법은 추상적이어야 하며 abstract 키워드를 추가하지 않아도 된다. 그러나 컴파일러는 인터페이스의 방법에 대해 추상적인 방법으로 직접 처리한다.

    7 - static 글로벌 변수와 일반 글로벌 변수의 차이점은 무엇입니까?static 국부 변수와 일반 국부 변수는 어떤 차이가 있습니까?static 함수와 일반 함수는 어떤 차이가 있습니까?C++ 중


    전역 변수 자체가 정적 저장 방식이고 정적 전역 변수도 당연히 정적 저장 방식이다.이 두 가지는 저장 방식에 있어서 결코 다르지 않다.이 두 가지 차이는 비정상적인 전역 변수의 작용역은 전체 원본 프로그램이지만 하나의 원본 프로그램이 여러 개의 원본 파일로 구성될 때 비정상적인 전역 변수는 각 원본 파일에서 모두 유효하다는 데 있다.정적 전역 변수는 그 역할 영역을 제한한다. 즉, 이 변수를 정의한 원본 파일에서만 유효하고 같은 원본 프로그램의 다른 원본 파일에서는 사용할 수 없다.정적 전역 변수의 작용역은 하나의 원본 파일에 국한되어 있기 때문에 이 원본 파일의 함수만 공용할 수 있기 때문에 다른 원본 파일에서 오류를 일으키지 않도록 할 수 있습니다.
    static 함수는 일반 함수와 작용역이 다르다.static 함수는 이 파일에서만 사용됩니다.현재 원본 파일에서만 사용하는 함수는 내부 함수(static)로 설명하고 내부 함수는 현재 원본 파일에서 설명하고 정의해야 한다.현재 원본 파일 이외에 사용할 수 있는 함수에 대해 하나의 헤더 파일에서 설명해야 한다. 이 함수를 사용하는 원본 파일은 이 헤더 파일을 포함해야 한다. static 전역 변수와 일반적인 전역 변수는 어떤 차이가 있는가. static 전역 변수는 한 번만 활성화시켜 다른 파일 단원에서 인용되지 않도록 한다.static 국부 변수와 일반 국부 변수는 어떤 차이가 있습니까? static 국부 변수는 한 번만 초기화되고 다음에는 지난번 결과 값에 근거합니다.static 함수와 일반 함수는 어떤 차이가 있습니까: static 함수는 메모리에 한 개만 있고 일반 함수는 호출될 때마다 복사본을 유지합니다

    좋은 웹페이지 즐겨찾기