JAVA 내부 류 의 정리 기록 | JAVA 핵심 권 제1 5 판 참조

2984 단어 JAVA
내부 류
클래스 내부 의 클래스 나 방법 에 정 의 된 클래스
우세:
  • 내부 클래스 방법 은 이 클래스 가 작용 하 는 모든 속성 (private 포함) 을 방문 할 수 있 습 니 다.
  • 같은 가방 의 다른 종 류 는 내부 류 에 접근 할 수 없습니다.
  • 리 셋 함수 에 대해 익명 내부 클래스 를 사용 할 수 있 습 니 다.
    public class demo3 {
        public static void main(String[] args) {
            User user = new User("a", 10);
            User.Inner inner = user.getInner();// new   
            System.out.println(user.toString());
            inner.setName("b");
            System.out.println(user.toString());
    
            }
    }
    
    class User implements Serializable {
        private String name;
        private transient Integer age;
        private Inner inner = new Inner();
    
        User(String name, Integer age) {
            this.name = name;
            this.age = age;
        }
        public Inner getInner() {
            return inner;
        }
    
    
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    
        // User$Inner.class
        class Inner {
            private Integer id;
    
            //     name      
            public void setName(String names) {
                name = names;
            }
        }
    }
    
  • 내부 클래스 의 정적 도 메 인 은 모두 final 입 니 다.모든 외부 클래스 의 인 스 턴 스 는 내부 클래스 의 인 스 턴 스 가 있 기 때문에 이 내부 클래스 의 정적 도 메 인 이 final 이 아니라면 모든 내부 클래스 의 정적 도 메 인 은 유일한 것 이 아 닙 니 다 (정적 내부 클래스 는 정적 도 메 인과 방법 이 있 을 수 있 습 니 다).
  • 내부 류 에는 static 방법 이 있어 서 는 안 된다.
  • 컴 파일 러 는 내부 클래스 를 $(달러 기호) 로 외부 클래스 와 내부 클래스 를 구분 하 는 일반적인 파일 로 번역 하고 가상 컴퓨터 는 이에 대해 아무것도 모른다.
  • 내부 류 의 장식 부 호 는 외부 류 를 통 해 접근 할 수 있 는 지 여 부 를 결정 하고 내부 류 에서 내부 류 를 다시 정의 할 수 있다. public  protected 방문 가능,  private  방문 할 수 없습니다. 쓰 지 않 으 면 public;
  • 부분 내부 류
    class User implements Serializable {
    private String name;
    private transient Integer age;
    private Inner inner = new Inner();
    
    User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
    public Inner getInner() {
        return inner;
    }
    
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    
    class Inner {
        private Integer id;
    
        //     name      
        public void setName(String names) {
            class InMethod {
                public void setName(String names) {
                    name = names;
                }
            }
            new InMethod().setName(names);
        }
    
        class InnerIn {
            public void setName1(String names) {
                name = names;
                id = 1;
                }
            }
        }
    }
    
  • 부분 클래스 는 Public 또는 private 방문 설명자 로 설명 할 수 없습니다. 역할 영역 은 이 부분 클래스 를 설명 하 는 블록 에 한정 되 어 있 습 니 다.
  • 부분 류 는 외부 에 완전히 숨 길 수 있다 는 장점 이 있다.
  • 익명 내부 클래스
    new SuperType(construction parameters) {
        inner class methods and data
    }

    좋은 웹페이지 즐겨찾기