Knowledge Wiki/Java (51) 썸네일형 리스트형 JAVA final 키워드 2. JDK 1.8부터는 final 키워드를 생략해도 값이 안 바뀌면 컴파일러가 상수 취급한다. 원래 JDK 1.8 이전의 자바에서 외부 클래스의 지역 변수는 final이 붙은 변수(상수)만 접근 가능했다. 그래서 final 키워드를 생략하면 무조건 에러가 났었는데 JDK 1.8 이후에는 해당 변수가 한번도 변하지 않으면 에러가 나지 않는다. (JAVA가 알아서 final 취급하도록 변경됐기 때문) JAVA 내부 클래스 1. 내부 클래스의 장점 1) 내부 클래스에서 외부 클래스의 멤버들에 쉽게 접근할 수 있다. 2) 코드의 복잡성을 줄일 수 있다. (캡슐화) JAVA 디폴트 메서드 1. JDK 1.8 부터는 인터페이스에 디폴트 메서드와 static 메서드도 사용 가능하게 되었다. JDK 1.8 이전에는 인터페이스에 새로운 메서드(추상 메서드)를 추가하기 어려웠음. 왜냐면 인터페이스에 메서드 하나 추가할 때마다 이 인터페이스를 구현하는 모든 자식 객체들에게도 메서드 구현부를 추가해야됐기 때문. 이 부분을 해결하기 위해 JDK1.8부터는 default 키워드를 추상 메서드 앞에 붙인 디폴트 메서드를 사용하기로 함. 2. 디폴트 메서드가 기존의 메서드와 충돌하는 경우가 생기게 됨. 그리고 이에 대한 해결책이 있다. 1) 여러 인터페이스의 디폴트 메서드 간의 충돌 - 인터페이스를 구현한 클래스에서 디폴트 메서드를 오버라이딩해야 한다. ex) public class MyClass imple.. JAVA 인터페이스 1. 인터페이스는 추상 메서드의 집합 (프로그래밍 관점) 인터페이스: 인스턴스 변수를 가질 수 없고 추상 메서드'만' 모아놓음 (JDK 1.8 이전까지는..) class MyClass implements MyInterface {} 추상클래스: 인스턴스 변수를 가질 수 있고 추상 메서드 + 구현 메서드를 가질 수 있음 class MyClass extends MyAbstractClass {} 2. 인터페이스는 다중 상속이 가능 인터페이스는 추상메서드 집합이기 때문에 충돌에서 자유롭다. 추상메서드는 구현체가 없으니까. 참고로 추상클래스는 단일 상속만 가능하다. 3. 인터페이스도 추상클래스처럼 구현클래스의 부모 역할을 한다. 4. 인터페이스의 장점 1) 두 대상(객체) 간의 '연결, 대화, 소통'을 돕는 '중간.. JAVA 다형성 1. 객체지향에서는 다형성이 거의 원탑으로 중요하다. 2. instanceof 연산자는 참조변수의 형변환 가능여부 확인에 사용한다. 형변환 가능하면 true를 리턴함. 형변환 전에는 반드시 instanceof로 형변환 가능한지 확인하고 진행하자. 3. 다형성 장점 1) 다형적 매개변수 : 부모 매개변수로 여러 자식 매개변수를 받을 수 있음 2) 하나의 배열에 여러 종류 객체 저장 가능 JAVA 클래스, 클래스패스 1. 생성자에서 다른 생성자 호출시 "첫 줄"에서만 사용 가능. 안그럼 에러난다. 그리고 생성자에서 다른 생성자를 호출하려면 함수이름 대신 this()로 호출해야 한다. 참조변수 this랑은 전혀 다르니까 연관짓지 마라. 2. 클래스 만들 때 기본 생성자는 필수!! 로 작성해두자 3. 클래스 패스(classpath) 1) 클래스 파일(*.class)의 위치를 알려주는 경로(path) 2) 환경변수 classpath로 관리하며, 경로간의 구분자는 ';'를 사용 3) classpath(환경변수)에 패키지의 루트를 등록해줘야 함. 4. java.lang 패키지의 클래스는 import하지 않고도 사용할 수 있다. JAVA 상속 1. JAVA는 다중 상속을 허용하지 않는다. 2. 참조변수 super는 조상의 멤버와 자신의 멤버를 구별할 때 사용 3. super()는 조상의 생성자 JAVA 오버로딩, 오버라이딩 1. 오버로딩 vs 오버라이딩 오버로딩 : 기존에 없는 새로운 메서드를 정의하는 것 오버라이딩 : 상속받은 메서드의 내용을 변경하는 것 2. 오버라이딩 조건 1) 선언부가 조상 클래스의 메서드와 일치해야 한다. 2) 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다. 3) 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다. 이전 1 2 3 4 5 6 7 다음