📚Study Note (118) 썸네일형 리스트형 [ JAVA ] 클래스 고급 - 인터페이스(Interface) ③ //인터페이스 interface Demo { public void write(); } //클래스 //class DemoImpl // //인터페이스를 구현하는 추상 클래스 //abstract class DemoImpl implements Demo // class DemoImpl implements Demo { @Override public void write() { System.out.println("write() 메소드 재정의..."); } //public void print(); } //클래스 //class DemoImplSub // // 추상 클래스를 상속받은 추상 클래 //abstract class DemoImplSub extends DemoImpl class DemoImplSub extends D.. [ JAVA ] 클래스 고급 - 인터페이스(Interface) ② //인터페이스 interface ADemo { public void write(); } //인터페이스 interface BDemo { public void print(); } //클래스 //class DemoImpl // 두 인터페이스를 구현하는 추상 클래스 //abstract class DemoImpl implements ADemo, BDemo //두 인터페이스를 구현하는 클래스 class DemoImpl implements ADemo, BDemo // ◈ 두 개의 인터페이스를 상속하고 있음 { // JDK 1.5(5.0)에서는 인터페이스 메소드를 오버라이딩 할 때 @Override 어노테이션을 사용할 수 없다 // JDK 1.6 이후부터 적용 가능한 문법이다. // (클래스에서 쓰는 것은 1.5부터,.. [ JAVA ] 클래스 고급 - 인터페이스(Interface) ● 인터페이스(Interface)란 완전히 미완성된 채로 남겨져 인터페이스 안에 존재하는 그 어떤 메소드도 몸체(정의부)가 없기 때문에 실행 부분이 존재하지 않는다. 클래스를 위한 템플릿으로써의 기능을 수행하는 추상클래스의 한 종류이다. ● 인터페이스는 클래스와 달리 다중 상속이 가능하며 인터페이스 자체도 상속된다. 기존의 C++언어 등에서 지원되는 다중 상속이 사용 과정에서 많은 문제점들을 노출시켰기 때문에 자바에서는 다중 상속의 개념을 인터페이스라는 개념으로 변형하여 인터페이스를 통해 다중 상속을 구현하는 방법을 지원한다. ● 인터페이스는 상수와 추상 메소드만 가질 수 있으며 인터페이스 안의 메소드들은 접근제어지시자를 명시하지 않아도 『public』 으로 설정되어 클래스에서 구현(implements).. [ JAVA ] 클래스 고급 - 상속 관계에 있는 클래스들 간의 캐스팅 ( 업 캐스팅, 다운 캐스팅 ) // 상위 클래스=부모클래스 class SuperTest111 { public int a=10 , b=20; public void write() { System.out.println("SuperClass write() 메소드,,,"); } public int hap() { return a+b; } } //하위 클래스 = 자식 클래스 class SubTest111 extends SuperTest111 { public int b=100 , c=200; @Override //c까지 더하도록 재정의 public int hap() { return a+b+c; } public void print() { System.out.println("서브클래스 print() 메소드"); } } // main() 메소드를 포함하.. [ JAVA ] 클래스 고급 - 추상 클래스 (Abstract) ● 추상 클래스(Abstract Class)는 선언만 있고 정의가 없는 하나 이상의 메소드(추상메소드)를 갖는 클래스로 하위 클래스에서 오버라이딩(Overriding)할 것으로 예상되는 메소드에 대해 메모리 낭비 없이 미리 호출 계획을 세워두기 위해 만든다. ● 형식 및 구조 [ 접근제어지시자 ] abstract class 클래스명 { [ 접근제어지시자 ] abstract 자료형 메소드명([매개변수], ....) } ● 특징 클래스가 적어도 하나 이상의 추상 메소드를 포함할 때 그 클래스는 클래스 이름 앞에 『abstract』 키워드를 붙여 추상 클래스로 명시해야 하며, 추상 클래스로 명시해서 선언한 경우에는 불완전한 형태의 클래스이므로 객체를 생성할 수 없다. 추상 메소드가 존재하지 않는 추상 클래스마.. [ JAVA ] 클래스 고급 - 상속 (Inheritance) ④ ※ 메소드 오버라이딩 (Method Overriding)의 특징 - 메소드 이름, 리턴 타임, 파라미터 수나 타입이 완전히 일치해야 한다. - 반드시 상속 관계가 있어야 한다. - 재정의된 하위 클래스의 메소드 접근제어지시자는 상위 클레스의 메소드 접근제어지시자 보다 범위가 크거나 같아야 한다. 예를 들어 상위 클래스 메소드의 접근제어지시자가 『protected 인 경우 하위 클래스가 이 메소드를 오버라이딩(Overriding) 하는 경우 접근 제어 지시자는 『protected』 또는 『public』 이어야 한다. - 『static』 『final』 『private』 메소드는 오버라이딩(Overriding) 할 수 없다. - Exception 의 추가가 불가능하다 즉 , 상위클래스의 메소드가 가지고 있는 .. [ JAVA ] 클래스 고급 - 상속 (Inheritance) ③ // ○실습문제 //다음과 같은 프로그램을 구현한다. //단, 상속의 개념을 적용하여 작성할 수 있도록 한다. 실행 예) 임의의 두 정수 입력(공백 구분) : 20 15 연산자 입력( + - * / ) : - >> 20 - 15 = 5 계속하려면 아무 키나... import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; class AClass { protected int x, y; protected char op; AClass() { } void write (double result) { System.out.printf(">> %d %c %d = %.2f\n", x, op, y, result); }.. [ JAVA ] 클래스 고급 - 상속 (Inheritance) ② ※ 『super』 static으로 선언되지 않은 메소드에서 사용되며(static은 클래스 로딩 순간 메모리 로딩되는 것) 현재 클래스가 상속받은 상위 클래스의 객체를 가리킨다. super는 상위 클래스의 생성자를 호출하거나 상위클래스의 멤버 변수 또는 메소드를 호출할 때 사용할 수 있다, 하위클래스의 생성자에서 상위클래스의 생성자를 호출할때에는 ★하위클래스의 생성자 정의 구문에서 맨 처음에만 위치할 수 있다, ※ 생성자와 클래스 상속 간의 관계 하위 클래스는 상위 클래스의 멤버를 상속받지만 생성자는 상속 대상에서 제외된다 그리고 , 하위 클래스의 생성자가 호출될 때 자동으로 상위클래스의 생성자가 호출된다. 이 때, 상위 클래스의 생성자는 인수가 없는 생성자 (default 생성자 형태) 가 호출된다. (.. 이전 1 ··· 7 8 9 10 11 12 13 ··· 15 다음