728x90
반응형
728x90
반응형
인터페이스 정의: 추상메서드의 집합 구현된 것이 전혀 없는 설계도 껍데기 모든 멤버가 public static final & public abstract이여야 함 따라서 public static final과 public abstract는 인터페이스 내에서 생략이 가능하다 추상메서드와 인터페이스의 차이점 추상메서드는 생성자, IV, 추상메서드를 가지고 있지만 인터페이스는 찐으로 아무것도 없는 빈 깡통 IV의 보유 여부로 판별 가능 = 인터페이스 IV 없음, 추상 메서드 IV 존재 다만 상수는 가질 수 있음 = final 인터페이스 선언하는 법 클래스와 동일하게 생성 위의 설명과 같이 앞의 public static final 은 interface에서 필수로 적용되야하기 때문에 생략이 가능하다 interfac..
추상클래스 미완성 메서드: 몸통 { } 이 없는 미완성 메서드 = 추상클래스; 미완성 설계도 목적: 다른 클래스 작성에 도움을 주기 위함 각각의 자손 클래스마다 조건이 다르므로 꼭 필요한 메서드지만 기능을 달리할 필요가 있는 메서드들은 조상에게 상속을 받아오고 자손의 클래스로 넘어올 때 기능을 각기 구현해준다 각기 구현해줌으로써 코드도 간결화되고 유지보수가 쉬워지는 장점 도움이 되는 과정 미완성 설계도가 1개 있다고 치면 추상 클래스는 그 미완성 설계도의 작성을 도와주는 추가 설계도라고 볼 수 있다. 그 설계도만 고침으로써 코드의 중복을 막아주고 나머지 코드를 동일화시켜서 관리가 용이해진다. 또한 각각의 의미있는 단계를을 추상클래스로 정의해 놓으면 나중에 특정 부분을 수정할 때 일처리가 쉬워진다. 설명:..
instanceof 참조변수의 형변환을 하기 전에 instanceof 함수를 써서 형변환 가능여부 확인 > 가능하면 true 반환 사용이유: 형변환하기전에 형변환 가능여부를 확인할 때 조상 멤버를 상속받을 때 어떤 인스턴스를 받을 지 알 수 없기 때문에 instanceof로 TV가 가르키는 smartTV 인스턴스로 형변환이 가능한지 확인해야 함 아래와 같이 형변환이 가능하면 true값을 반환하고 불가능하면 false값을 반환 SmartTV smarttv = new SmartTV(); TV tv = new TV(); System.out.println(smarttv instanceof TV); System.out.println(smarttv instanceof SmartTV); System.out.print..
다형성 - polymorphism 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 다만 반대의 경우는 불가능 (자손타입이 조상타입 객체를 가리키는 것) 참조된 인스턴스 멤버의 개수(조상)가 실제 사용 가능한 개수(자손)보다 적기때문에 오류 발생 아래와 같이 객체와 인스턴스 타입이 불일치함을 다형성을 표현하였다고 함 TV t = new SmartTV(); // 객체와 인스턴스 타입이 불일치 SmartTV st = new SmartTV(); 객체와 인스턴스가 불일치함의 의미는 사용할 수 있는 인스턴스 멤버의 개수가 달라진다고 볼 수 있다. 만약 다형성이 아니라면 (객체와 인스턴스가 일치하면) 아래의 코드처럼 TV의 클래스에 들어있는 총 4개의 변수 + SmartTv 클래스의 2개의 변수 = 총 6개를 사..
패키지 Package 서로 관련된 클래스의 묶음 클래스는 .class 파일, 패키지는 폴더, 하위 패키지는 하위 폴더 rt.jar이 클래스들을 압축한 파일 java9 부터 module로 변경되어 잘게 쪼개짐 = 용량 간소화 목적 첫번째 문장으로 단 한번만 선언 같은 소스 파일의 클래스는 모두 같은 패키지(첫문장)에 속함 패키지 선언이 없으면 unnamed의 패키지에 선언이 됨 (이름없는 패키지) 클래스 패스(classpath) 제어판 > 환경변수 > 추가 > 명령 프롬프트에서 읽어올 파일 경로를 추가 추가할 때 이름은 classpath, 경로는 폴더에서 복붙 지정한 후 java (읽을 클래스 파일 정확하게 입력)
참조변수(super) IV, LV 구별에 사용되는 this 와는 다르게 super는 조상멤버와 자신의 멤버를 구별할 때 사용 super는 parent의 x로 구별하여 사용하고 this는 child의 x로 구별하여 사용함 일반 x는 child의 멤버변수로 오버라이딩되어 20으로 출력됨 조상의 변수가 존재하지만 자식의 변수가 존재하지 않을 때는 this를 사용해도 조상의 변수로 사용됨 ( = 10으로 통일) 출력문: x = 20 super.x = 10 this.x = 20 public static void main(String[] args) { child c = new child(); c.method(); } } class parents{ int x = 10; } class child extends pare..
단일 상속 Java는 단일 상속만을 허용한다. 아래와 같은 두개의 상속은 불가 ( C++만 가능) class SmartTv extends TV, option{ 따라서 비중이 높은 클래스는 상속으로, 비중이 낮은 클래스는 포함으로 하여 코드의 간결화 가능 아래는 SmartTV에서 비중이 높은? DVD클래스를 상속받고 TV클래스를 포함시켜 channel 값을 지정한 다음 메서드만 출력받아 아래와 같이 출력 출력문: 1 10 public static void main(String[] args) { SmartTv st = new SmartTv(); st.channel = 0; st.channelup(); System.out.println(st.channel); st.fast(); System.out.printl..
상속 inheritance 기존의 class에서 새로운 class를 작성하는 것 (코드의 재사용) 두 class를 부모와 자식의 관계로 맺어주는 것 상속 inheritance를 쓰는 이유 적은 양의 코드를 사용하여 새로운 class 작성 가능 공통적으로 코드를 관리 가능 (새롭게 추가 or 변경) = 유지보수 용이 아래와 같이 지정할 수 있음 extends 함수를 사용 class parents{} class child extends parents{} 자식은 조상(부모의 부모...부모) 모든 멤버 변수를 상속받는다 다만 생성자와 초기화 블럭 제외 따라서 자식의 멤버변수는 항상 부모와 같거나 많다 class parents{ int age; } class child extends parents{} // cla..