ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바
    프로그래밍 언어/클래스 2012. 5. 22. 21:12

    public class NestedValueReference {
    public int publicInt = 0;
    protected int protectedInt = 1;
    int justInt = 2;
    private int privateInt = 3;
    static private int staticInt = 4;
    static private class StaticNested {
    private int staticNestedInt=99;
    public void setValue() {
    staticInt = 14;
    }
    }
    private class Inner {
    private int innerValue=100;
    public void setValue() {
    publicInt = 20;
    protectedInt = 21;
    justInt = 22;
    privateInt = 23;
    staticInt = 24;
    }
    }
    public void setValue() {
    EventListener listener = new EventListener() {
    public void onClick() {
    publicInt = 30;
    protectedInt = 31;
    justInt = 32;
    privateInt = 33;
    staticInt = 34;
    }
    };
    }
    public void setValue(int value) {
    StaticNested nested=new StaticNested();
    nested.staticNestedInt=value;
    Inner inner=new Inner();
    inner.innerValue=value;
    }
    }
    -
    java.util.Objects    // JDK 7
    .requireNonNull() // static

    java.lang.Class
    .forName()    // static; 동적 클래스 로딩
    .getName()
    .getConstructors() // java.lang.reflect.Constructor[]
    .getMethods() // java.lang.reflect.Method[]

    .getDeclaredMethods()    // java.lang.reflect.Method[]

    .getMethod()    // Method

    .isInterface()
    .isInstance()
    c.f. instanceof 연산자


    .getInterfaces() // Class[]
    .getSuperclass() // Class
    .newInstance()

    -
    Enum
    .values() // static

    public enum OverTimeValues {
    THREE_HOUR, FIVE_HOUR, WEEKEND_FOUR_HOUR, WEEKEND_EIGHT_HOUR;
    }
    OverTimeValues value1 = OverTimeValues.THREE_HOUR;
    -
    package c.javapackage.sub;
    public class Sub {
    public final static String CLASS_NAME = "Sub";
    static int data = 1;
    static {
    data = 3;
    }
    public static void subClassStaticMethod() {
    ...
    }
    }
    import static c.javapackage.sub.Sub.subClassStaticMethod;
    import static c.javapackage.sub.Sub.CLASS_NAME;
    public class Package {
    public static void main(String[] args) {
    subClassStaticMethod();
    System.out.println(CLASS_NAME);
    }
    }
    -
    메소드는 "Pass by Value"로 데이터를 전달한다

    null
    객체의 null 체크는 반드시 필요하다
    .==()
    .!=()

    객체는 .equals() 메소드로 비교를 해야 한다

    배열도 객체이긴 하지만 메소드는 없는 특수한 객체다.

    java.lang 패키지는 자동 포함
    c.f. import java.lang.*;

    자바의 모든 클래스는 자바의 최상위 클래스인 java.lang.Object 클래스로부터 상속

    Cloneable 인터페이스
    Serializable 인터페이스

    프로퍼티

    final 한정자
    final 클래스: 상속이 불가능

    사용자가 생성자를 하나라도 만들게 되면 컴파일러는 더 이상 디폴트 생성자(속성들을 0으로 초기화)를 제공해주지 않는다.

    this
    this()

    정적 메소드는 오버라이딩되지 않는다.

    .super
    수퍼클래스를 가리키는 레퍼런스 변수
    .super()
    수퍼클래스가 인자없는 생성자를 가지고 있지 않다면 암시적 호출은 컴파일 에러를 유발한다

    instanceof 연산자

    finalize()
    수퍼클래스 파이널라이저를 명시적으로 호출해야 한다.
    e.g. super.finalize();

    멤버 접근 제어 규칙
    private
    package
    protected
    package

    서브 클래스에서 메소드는 슈퍼 클래스의 접근 제어보다 더 좁아질 수 없다.

    생성자는 상속되지 않는다
    슈퍼 클래스의 생성자를 명시하지 않더라도 자동적으로 호출된다.

    메소드 오버라이딩
    동적 메소드 검색

    final 한정자
    더 이상 오버라이딩이 불가능
    정적 메소드 검색
    변수에 쓰일 때는 상수

    abstract 클래스
    추상 메소드를 하나라도 가지는 클래스는 반드시 추상 클래스
    to force inheritors to override it
    인스턴스화될 수 없다

    인터페이스
    필드는 static과 final의 상수
    선언된 변수는 무조건 public static final의 속성을 갖는다
    abstract 메소드

    다형성
    추상 클래스
    인터페이스

    .toString()
    객체 자체를 출력해도 동일한 결과?
    .equals()
    두 객체의 내용이 동일한지 여부
    .==()
    두 레퍼런스 변수가 동일한 인스턴스를 가리키는지 여부 // 동일한 포인터 값?
    .getClass()    // java.lang.Class


Designed by Tistory.