목록자바 (10)
개발계발
타입 변환인터페이스의 타입 변환은 인터페이스와 구현 클래스 간에 발생한다.자동 타입 변환과 강제타입 변환이 있는데, 인터페이스 변수에 구현 객체를 대입하면 구현 객체는 인터페이스 타입으로 자동 타입 변환되고, 인터페이스 타입을 구현 클래스로 타입으로 변환시킬 때는 강제 타입 변환이 필요하다. 자동 타입 변환말 그대로 자동으로 타입 변환이 일어나는 것으로, 아래와 같은 조건에서 일어난다.인터페이스 변수 = 구현객체;위 이미처럼 인터페이스를 구현한 B, C 클래스가 있고, B와 C클래스를 각각 상속한 D, E 자식 클래스가 있을 때,B,C,D,E로부터 생성된 객체는 모두 인터페이스 A로 자동 타입 변환이 가능하다.B,C,D,E가 클래스가 모두 작성됐다고 가정하면 아래와 같이 자동 타입 변환이 가능하다.pub..
이전에 인터페이스에 대해 포스팅했는데, 구현 객체는 여러 개의 인터페이스를 implements할 수 있다.사용법은 아래와 같다.public class 구현클래스 implements 인터페이스1, 인터페이스2 {}이 경우, 구현 클래스는 여러 개의 인터페이스의 추상 메소드를 모두 재정의 해야한다. 인터페이스 상속자바의 클래스는 다중 상속을 허용하지 않으나, 인터페이스는 다중 상속이 허용된다.사용법은 아래와 같다.public interface 자식인터페이스 extends 부모인터페이스1, 부모인터페이스2 { ...}이 경우, 이 자식인터페이스의 구현 클래스는 자식 인터페이스와 모든 부모 인터페이스의 모든 추상 메소드를 재정의해야 한다.단, 구현 객체를 부모 인터페이스 변수에 대입할 경우, 자식 인터페이스의 ..
인터페이스란?두 객체를 연결하는 역할을 하는 것으로, 인터페이스를 통해 객체가 다른 객체를 직접 사용하지 않음으로 다형성 구현에 주된 기술로 이용된다. 예를 들어, 아래와 같이 객체 B가 객체 C로 변경된다 하더라도, 객체 A는 인터페이스의 메소드만 사용하기 때문에 아무 상관이 없다.인터페이스 선언인터페이스는 class 키워드 대신 interface 키워드를 사용한다.(파일 자체는 클래스와 동일하게 .java의 형태)interface 인터페이스명 {...} // default 접근 제한// public 접근 제한public interface 인터페이스명 { // public 상수 필드 // public 추상 메소드(선언부만 있고, 실행부인 중괄호가 없는 메소드) // public 디폴트 메소드..
추상 클래스란?객체를 생성할 수 있는 클래스를 실체 클래스라고 했을 때, 이 클래스들의 공통적인 필드와 메소드를 추출해서 선언한 클래스를 추상 클래스라고 한다.추상 클래스는 실체 클래스의 부모 역할을 한다. 예를 들어 새, 강아지, 고양이라는 실체 클래스가 있을 때 동물이라는 추상 클래스를 만들어 부모 역할을 하도록 할 수 있다. 주의 사항- 추상 클래스는 new 연산자를 이용해 객체를 직접 생성할 수 없고, 실체 클래스를 만들기 위한 부모 클래스로만 사용된다.(extends 뒤에만 올 수 있음) 추상 클래스 선언클래스 선언 시 abstarct 키워드를 붙이면 추상 클래스가 된다.위에서 작성했듯이, 객체를 직접 만들지 못하고 상속을 받은 자식클래스만 만들 수 있다.(생성자가 없는 것은 아님) 추상 클래스..
상속이란?말 그대로 부모가 자식에게 물려주는 행위로, 부모 클래스의 필드와 메소드를 자식 클래스에 물려줄 수 있다. 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여 개발 시간을 단축한다.사용법은 아래와 같다.public class Parent { int field1; void method1() { // 함수 로직 }}public class child extends Parent { String field2; void method2() { // 함수 로직 }} 위와 같이 하면 child 클래스에서 field1과 method1()를 사용할 수 있다. 자바는 다중 상속을 허용하지 않아서, extends 뒤에는 단 하나의 부모 클래스만이 ..
경우에 따라서 객체의 필드를 외부에서 변경하거나 메소드를 호출할 수 없도록 막야한다.이런 경우를 위해서 자바에서는 public, protected, private라는 접근 제한자를 제공한다. 접근 제한자제한 대상제한 범위public클래스, 필드, 생성자, 메서드없음protected필드, 생성자, 메소드같은 패키지, 자식 객체만 사용 가능(default)클래스, 필드, 생성자, 메소드같은 패키지private필드, 생성자, 메소드객체 내부 클래스의 접근 제한클래스는 public과 default 접근 제한을 가질 수 있다.클래스 작성 시 기본적으로 public 키워드를 많이 사용하는 데, 생략할 경우 default 접근 제한을 가지게 된다.default의 경우, 같은 패키지에서만 사용가능하게 된다. 생성자의 ..