728x90
반응형

JAVA 266

인터페이스 ( interface )

인터페이스란? - 추상 메서드의 집합 - 구현된 것이 전혀 없는 설계도. 껍데기 ( 모든 멤버가 public ) 추상클래스와 인터페이스의 공통점 추상메서드를 가지고 있다. 추상클래스와 인터페이스의 차이 추상클래스는 일반 클래스인데 추상메서드를 포함하고 있는 것이다. 그래서 생성자도 가지고 있고 멤버변수도 가지고 있다. 반면 인터페이스는 오로지 추상 메서드, 상수, static메서드, default메서드 만으로 이루어져 있다. 항상 public / static / abstract 이기 때문에 생략 가능하다. 일부만 써도 되고 전부 생략해도 된다. 인터페이스의 상속 - 인터페이스의 조상은 인터페이스만 가능 ( Object 가 최고 조상이 아니다 ) - 다중 상속이 가능. ( 추상메서드는 충돌해도 문제 없음 ..

JAVA 2022.03.02

추상 클래스, 추상 메서드

추상 클래스 ( abstract class ) - 미완성 설계도. 미완성 메서드( 추상 메서드 ) 를 갖고 있는 클래스 → 제품생성 불가 - 다른 클래스 작성에 도움을 주기 위한 것 . 인스턴스 (제품) 생성 불가 - 상속을 통해 추상 메서드를 완성해야 인스턴스 생성가능 - 코드의 중복 제거 추상 메서드 ( abstract method ) - 미완성 메서드. 구현부 (몸통, { } 가 없는 메서드 - 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우 사용 - 상속을 통해 자손이 완성하고 호출 ( 호출할 때는 선언부만 필요 ) 추상클래스의 작성 - 여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 작성 or 기존 클래스의 공통 부분을 뽑아 추상클래스를 만든다. - 추상화된 코드는 구체화된 코드..

JAVA 2022.03.01

참조변수의 형변환

조상 클래스 : Car / 자손 클래스 : FireEngine , Ambulance 참조변수 f 는 FireEngine클래스 타입이다. 참조변수 c 는 Car클래스 타입이다. 참조변수 f2 는 FireEngine클래스 타입이다. 참조변수 a 는 Ambulance클래스 타입이다. Car c = (Car) f ; 참조변수 c 에 f를 대입하였는데 둘의 타입이 다르므로 참조변수 f에 (Car) f 로 형변환을 해주어야한다. // 조상인 타입으로 형변환을 할 때는 생략가능하다. 참조변수는 값을 넣어주는 것이 아니라 주소를 넣어주므로 참조변수 f와 c의 주소가 같다는 것을 의미한다. 그러나 f는 FireEngine클래스 타입이기 때문에 5가지의 기능을 사용할 수 있고, c 는 Car클래스 타입이기 때..

JAVA 2022.02.28

다형성 ( polymorphism )

다형성 - 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 → 참조변수로 사용 할 수 있는 멤버의 갯수가 달라짐. 조상 클래스 : Tv / 자손 클래스 : SmartTv SmartTV s = new SmartTv( ); // 참조 변수와 인스턴스의 타입이 일치 → 보편적 Tv t = new SmartTv( ); // 조상 타입 참조변수로 자손 타입 인스턴스 참조 → ok. 그러나 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다. SmartTV s = new Tv( ); // 에러 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다. 조상타입의 참조 변수로 여러 자손타입의 객체를 다룰 수 있는데, 자손 타입의 객체를 변경해도 클라이언트는 그대로 사용가능하다.

JAVA 2022.02.27

캡슐화 ( Encapsulation )

캡슐화와 접근 제어자 접근제어자를 사용하는 이유 1. 외부로부터 데이터를 보호하기 위해서 2. 외부에는 불필요한, 내부적으로만 사용되는 부분을 감추기 위해서 ex) 외부에서 변수를 쉽게 변경할 수 없도록 변수들을 private으로 설정해주고 그 변수들에 접근할 수 있는 메서드를 public으로 설정해주어서 메서드안에 조건을 정해주어 조건에 만족할 때에만 변수값을 변경 할 수 있도록 한 것이다.

JAVA 2022.02.27

제어자 ( modifier )

- 클래스와 클래스 멤버 ( 멤버변수, 메서드 )에 부가적인 의미 부여 - (종류) 접근제어자 public / protected / (default) : 아무것도 안붙인 것 / private 그 외 static / final / abstract / native / transient / synchronized / volatile / strictfp - 하나의 대상에 여러 제어자를 같이 사용가능 ( 접근제어자는 하나만 가능 ) : 순서는 상관 없지만 보통 접근제어자를 제일 왼쪽에 쓴다. ex) public class ModifierTest { public static final int WIDTH = 200; public static void main( String[] args ) { System.out.pr..

JAVA 2022.02.26

상속( Inheritance )

상속이란? class 자식클래스 extends 부모클래스 { // ... } - 기존의 클래스로 새로운 클래스를 작성하는 것 ( 코드의 재사용 ) - 두 클래스를 부모와 자식으로 관계를 맺어주는 것 - 자손은 조상 ( 부모의 부모 것도 )의 모든 멤버를 상속받는다. ( 생성자, 초기화 블럭 제외 ) - 자손의 멤버 개수는 조상보다 적을 수 없다. ( 같거나 많다. ) : 안적어도 자동으로 포함되어있다. - 자손의 변경은 조상에 영향을 미치지 않는다. - Java는 단일 상속만을 허용한다. ( C ++은 다중상속 허용 ) - Object클래스는 모든 클래스의 조상이다 : 모든 클래스는 자동적으로 Object클래스를 상속받아 Object클래스에 정의된 11 개의 메서드를 상속받는다. ( toString(),..

JAVA 2022.02.24

변수의 초기화

- 지역변수는 사용전에 꼭 수동 초기화 해야함. - 멤버변수 ( 인스턴스 변수, 클래스 변수 )는 자동 초기화됨. ( default값은 대부분 0 , String은 null ) 멤버변수의 초기화 1. 명시적 초기화 ( = ) : 간단초기화 int door = 4; // 기본형 ( primitive type )변수의 초기화 Engine e = new Engine(); // 참조형 ( reference type )변수의 초기화 2. 초기화 블럭 : 복잡한 초기화 - 인스턴스 초기화 블럭 : { } - 클래스 초기화 블럭 : static{ } 3. 생성자 : iv 초기화 , 복잡한 초기화 클래스 변수 초기화 시점 : 클래스가 처음 로딩될 때 단 한번 인스턴스 변수 초기화 시점 : 인스턴스가 생성될 때 마다

JAVA 2022.02.24

오버로딩 ( overloading) 과 오버라이딩 ( overriding )

오버로딩 : 매개변수는 다르지만 같은 의미의 기능을 수행하는 것. 오버로딩의 성립 조건 1. 메서드 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. 3. 반환 타입은 영향없다. ( 반환 타입이 다른 것으로는 오버로딩이 성립 되지 않는다. ) 오버라이딩 : 상속받은 조상의 메서드를 자신에 맞게 변경하는 것

JAVA 2022.02.22
728x90
반응형