IT/Java

· IT/Java
타입 변환 타입 변환은 인터페이스와 구현 클래스 간에 발생한다. 자동 타입 변환(promotion) 인터페이스 변수 = 구현객체; 인터페이스 변수에 구현 객체를 대입하면 인터페이스 타입으로 자동 타입 변환된다. 부모 클래스가 인터페이스를 구현하고 있으면 자식 클래스도 인터페이스 타입으로 자동 타입 변환될 수 있다. 강제 타입 변환(Casting) 구현클래스 변수 = (구현클래스) 인터페이스변수; 인터페이스 타입으로 자동 타입 변화된 후, 다시 구현 클래스 타입으로 변환되는 것이다. 구현 객체를 모르거나, 변경될 수 있어 확인 없이 강제 타입을 변환하면 예외(ClassCastException)가 발생하니 객체의 타입을 확인하는 instanceof 연산자를 사용해 확인 후 변환한다.
· IT/Java
abstract method [public abstract] 리턴타입 메소드명(매개변수, ...); 추상 메소드는 리턴 타입, 메소드명, 매개변수만 기술되고 중괄호를 붙이지 않는 메소드이다. public abstract를 생략하더라도 컴파일 과정에서 자동으로 붙는다. 내부의 모든 메서드는 추상 메소드로 정의한다. 구현 클래스에서 추상 메소드 재정의 시 public보다 더 낮은 접근 제한으로 재정의할 수 없다. default method [public] default 리턴타입 메소드명(매개변수, ...) {...} default 메소드를 추가하면 구현 클래스에서 필수로 메소드를 재정의 하지 않아도 된다. 추상 메소드는 실행부(중괄호 {})가 없지만, 디폴트 메소드는 실행부가 있다. 실행부에서는 상수 필드를..
· IT/Java
인터페이스는 데이터를 저장할 수 없기 때문에 상수 필드만 선언할 수 있다. [public static final] 타입 상수명 = 값; 인터페이스에 선언된 필드는 모두 public static final 특성을 갖기에 생략하더도 자동적으로 컴파일 과정에서 붙는다. 상수명은 대문자로 작성하며, 서로 다른 단어로 구성 시 언더바(_)로 연결한다. public interface Example { // 상수 선언 int MAX_NUMBER = 100; } 상수는 구현 객체와 관련 없는 인터페이스 소속 멤버로 인터페이스에서 바로 접근하여 상수값을 읽을 수 있다.
· IT/Java
인터페이스(Interface) 클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등의 문제 발생으로 자바에서는 클래스를 통한 다중 상속을 지원하지 않는다. 다중 상속의 이점을 버릴 수 없기에 인터페이스를 통해 다중 상속을 지원하고 있다. 인터페이스는 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미한다. 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있지만 인터페이스는 추상 메소드와 상수만 포함할 수 있다. 인터페이스 선언 interface 인터페이스명 { ... } // default 접근 제한 public interface 인터페이스명 { ... } // pulic 접근 제한 p..
· IT/Java
추상(abstract) 추상은 실체 간에 공통되는 특성을 추출한 것을 말한다. 추상 클래스(abstract class) 추상적으로 밖에 그려지지 않은 클래스로, 클래스가 전체적인 구성을 다 가지지 못한 채 설계만 되어 있는 클래스다. 객체를 생성할 수 있는 클래스를 실체 클래스라 하면, 실체 클래스의 공통적인 필드나 메소드를 추출해서 선언한 클래스가 추상 클래스다. 추상 클래스는 실체 클래스의 부모 역할을 한다. 실체 클래스는 추상 클래스를 상속해서 공통적인 필드나 메소드를 물려 받을 수 있다. 실체 클래스의 공통되는 필드와 메소드를 추출해서 만들어진거라 new 연산자를 사용하여 객체를 직접 생성할 수 없다. class Child extends Parent {...} 실체 클래스를 만들기 위한 부모 클래..
· IT/Java
instanceof 객체가 어떤 클래스인지, 어떤 클래스를 상속 받았는지 객체의 타입을 확인할 때 사용한다. boolean result = 객체 instanceof 타입; boolean result = parent instanceof Child 좌항의 객체가 우항의 타입이면 true, 아니면 false를 산출한다. 강제 타입 변환하기 전 매개값이 맞는지 여부를 확인하기 위해 사용한다. 예제 코드 package ch07.sec09; public class Person { // 필드 선언 public String name; // 생성자 선언 public Person(String name) { this.name = name; } // 메소드 선언 public void walk() { System.out.pri..
· IT/Java
다형성(Polymorphism) 하나의 객체가 여러가지 타입을 가질 수 있으며 사용 방법은 동일하지만 실행 결과가 다양하게 나오는 성질이다. 객체 사용 방법이 동일하다는 것은 동일한 메소드를 가지고 있다는 뜻이다. 1. 필드 다형성 필드 타입(사용 방법)은 동일하지만 대입되는 객체에 따라 실행 결과가 다양하다. 예제 코드 더보기 package ch07.sec08.exam01; public class Tire { public void roll() { System.out.println("회전합니다."); } } package ch07.sec08.exam01; public class HankookTire extends Tire { @Override public void roll() { System.out.pr..
· IT/Java
클래스 변환은 상속 관계에 있는 클래스에서 발생한다. 자동 타입 변환(Promotion) 상속 관계에서 자식이 부모 타입으로 타입 변환하는 것을 클래스의 자동 타입 변환이라 한다. 부모타입 변수 = 자식타입객체; Child child = new Child(); Parents parents = child; Parents parents = new Cat(); Parents와 Child 변수는 타입만 다르고 동일한 Child 객체를 참조한다. 바로 위의 부모가 아니더라도 상속 계층에서 상위 타입이라면 자동 타입 변환이 가능하다. 상속 관계에 있지 않으면 컴파일 에러가 나타난다. 예제 코드 더보기 package ch07.sec07.exam02; public class Parent { // 메소드 선언 publi..
· IT/Java
Method Overriding 자식 클래스는 부모 클래스의 private 멤버를 제외한 모든 메소드를 상속 받는다. 상속 받은 메소드는 그대로 사용해도 되고, 필요한 동작을 위해 재정의 후 사용할 수도 있다. 즉, Method Overriding이란 상속된 메소드를 자식 클래스에서 직접 재정의하는 것이다. Method Overriding이 되면 부모 메소드는 숨겨지고, 자식 메소드가 우선적으로 사용된다. Overriding 규칙 메소드의 동작만 재정의하는 것으로, 자식 메소드의 선언부가 부모 메소드의 선언부(리턴 타입, 메소드 이름, 매개변수)와 동일해야 한다. 부모 클래스의 메소드보다 접근 제어자를 더 좁은 범위로 변경할 수 없다. 부모 클래스의 메소드보다 더 큰 범위의 예외를 선언할 수 없다. 예제..
· IT/Java
상속(Inheritance) 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다. 기존에 정의되어 있던 클래스(부모 클래스)의 모든 필드와 메소드를 물려받아 새로운 클래스(자식 클래스)를 생성할 수 있다. 상속의 장점 기존에 작성된 클래스를 재활용 가능하므로 중복되는 코드를 줄여 개발 시간이 단축된다. 자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스에 작성하면, 자식 클래스에 해당 멤버를 작성하지 않아도 된다. 부모 클래스를 수정하면 모든 자식 클래스도 수정되기에 최소한만 수정할 수 있다. 클래스 간의 계층적 관계를 구성하여 다형성의 문법적 토대를 마련한다. 문법 public class Child extends Parent { } 자바는 다중 상속을 허용하지 않아,..
Huitopia
'IT/Java' 카테고리의 글 목록 (3 Page)