# 02/Java 썸네일형 리스트형 [윤성우 열혈자바] 17-2. 인터페이스의 문법 구성과 추상 클래스 인터페이스에 선언되는 메소드와 변수 인터페이스는 외부에서 클래스가 사용하는 방법을 명시하는 것이므로 외부에서 사용할 수 있게 public으로 인식함. interface Printable {public void print(String doc); // 추상 메소드. 무조건 public임 선언하지 않아도 default가 아니라 public으로 인식함.} interface Printable {public static final int PAPER_WIDTH = 70;public static final int PAPER_HEIGHT = 120;public void print(String doc);} 인터페이스는 인스턴스 생성이 불가하므로 인스턴스 변수 생성 할 수 없음!! 단, 상수 선언 가능!! 변수 는 무조건 .. [윤성우 열혈자바] 17-1. 인터페이스의 기본과 그 의미 추상 메소드만 담고 있는 인터페이스 interface Printable {public void print(String doc); // 추상 메소드}인터페이스의 정의! 메소드의 몸체를 갖지 않는다.따라서 인스턴스 생성 불가! 참조변수 선언 가능! class Printer implements Printable {public void print(String doc) {System.out.println(doc);}}인터페이스를 구현하는 클래스!구현하는 메소드와 추상 메소드 사이에도 메소드 오버라이딩 관계 성립, 따라서 @Override 붙일 수 있음 Printable prn = new Printer();prn.print( "Hello" ); 인터페이스형 참조변수 선언 가능 Printer 클래스안에 메서드를 정의.. [윤성우 열혈자바] 16-2. Object 클래스와 final 선언 그리고 @Override 모든 클래스는 Object 클래스를 상속한다. class MyClass { ... } 상속하는 클래스가 없다면 컴파일러에 의해 다음과 같이 java.lang.Object 클래스를 상속하게 코드가 구성된다. class MyClass extends Object { ... } class MyClass extends OtherClass { ... } 이렇듯 다른 클래스를 상속한다면 Object 클래스를 직접 상속하지는 않게 된다. 그러나 간접적으로 (Object 클래스를 상속하는 클래스를 상속하는 형태로) Object 클래스를 상속하게 된다. 모든 클래스가 Object를 직접 또는 간접 상속하므로 // System.out.printlnpublic void println(Object x) {. . .String .. [윤성우 열혈자바] 16-1. 상속이 도움이 되는 상황의 소개 상속 기반의 문제 해결 : 두 클래스 상속 관계로 묶기 class Friend {protected String name;protected String phone; public Friend(String na, String ph) {name = na;phone = ph;}public void showInfo() {System.out.println( "이름 : " + name );System.out.println( "전화 : " + phone);}} "연관된 일련의 클래스들에 대해 공통적인 규약을 정의 및 적용할 수 있다." "CompFriend와 UnivFriend 클래스에 대해 Friend 클래스라는 규약을 정의하고 적용할 수 있다." class CompFriend extends Friend {privat.. [윤성우 열혈자바] 15-3. instanceof 연산자 instanceof 연산자의 기본 class Cake {} class CheeseCake extends Cake {} class StrawberryCheeseCake extends CheeseCake {} public static void main(String[] args) {Cake cake = new StrawberryCheeseCake(); if (cake instanceof Cake) { ... } // true if (cake instanceof CheeseCake) { ... } // true if (cake instanceof StrawberryCheeseCake) { ... } // true} if (ref instanceof ClassName)ref가 ClassName 클래스의 인스턴스를.. [윤성우 열혈자바] 15-2. 메소드 오버라이딩 상위 클래스의 참조변수가 참조할 수 있는 대상의 범위 class SmartPhone extends MobilePhone { . . . . } 스마트폰은 모바일폰이다. SmartPhone phone = new SmartPhone ( "010-555-7777", "Nougat" ); 따라서 스마트폰 참조변수로 스마트폰 참조 가능하고, 이 역은 성립하지 않음에 주의! (다운캐스팅 안됨)MobilePhone phone = new SmartPhone( "010-555-777", "Nougat" ); 모바일폰 참조변수로 스마트폰 참조도 가능하다. (업캐스팅 가능) 단 , 업캐스팅 시 SmartPhone 인스턴스 생성되었지만 메서드는 MobilePhone에 제한된다. SmartPhone에 만 있는 기능은 사용 못함!.. [윤성우 열혈자바] 15-1. 상속을 위한 두 클래스의 관계 상속 관계에 놓은 두 대상의 관찰 상속의 특성 하위 클래스는 상위 클래스의 모든 특성을 지닌다.거기에 더하여 하위 클래스는 자신만의 추가적인 특성을 더하게 된다. 상속 관계에 있는 두 대상은 IS-A 관계를 가져야 한다. ( A is a B ) IS - A 관계 .. 은 .. 이다. 의 관계 IS - A 관계를 갖지 않는 두 클래스가 상속으로 연결되어 있다면, 적절한 상속이 아니다!! 예) 스마트폰 is a 모바일폰 ( 스마트폰은 일종의 모바일 폰이다. ) 옳은 상속! [윤성우 열혈자바] 14-2. 클래스 변수, 클래스 메소드와 상속 클래스 변수, 메소드는 상속이 되는가? class SuperCLS {static int count = 0; // 클래스 변수 public SuperCLS() {count++; // 클래스 내에서는 직접 접근이 가능}} 프로그램 전체에서 딱 하나만 존재하는데 상속의 대상이 되겠는가? 상속안됨! class SubCLS extends SuperCLS {public void showCount() {System.out.println(count); // 상위 클래스에 위치하는 클래스 변수에 접근}} 그러나 하위 클래스에서 이름만으로 접근 가능하다!접근 수준 지시자에서 허용한다면! 이전 1 ··· 4 5 6 7 8 9 10 11 다음