반응형

자바의정석 113

[자바의 정석 - 기초편] ch7-33,34 추상클래스의작성2

ch7-34 추상 클래스의 작성 중복이 제거되고, 필요한 부분만 채우면 되기 때문에 처음보다 설계도를 만들기 쉬워졌다 관리가 용이하고 설계도를 쉽게 작성 중복제거 추상클래스를 단계별로 만들어 놓을 수 있다. 어떤 장점이 있는가? 추상 클래스를 의미있는 단계별로 나누어 작성해놓으면 내가 중간 단계 것을 골라서 구현할 수 있다. - 추상화 구체화 구체화는 명확한 것 그리고 불명확한 것은 다르다 애매한 게 좋을 때가 있다. 피해갈 구멍이 있으니... 추상화된 코드는 구체적인 코드보다 변경에 유연하다. 불분명한 것 : 추상화 어떤 클래스의 객체를 사용할 것인지 명확한 구체적인 코드 코드를 추상적으로 써 놓으면 os의 설정을 확인하고 반환을 해준다. 이해가 가지 않을 때는 계속 진도를 나가며서 실습을 진행한다.

자바의정석 2022.03.22

[자바의 정석 - 기초편] ch7-33,34 추상클래스의작성1

ch7-34 추상 클래스의 작성 추상 클래스란 미완성 설계도 ( 미완성 메서드를 포함한 ) 추상 메서드 = 몸통이 없는 메서드 - 여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존 클래스의 공통 부분을 뽑아서 추상클래스를 만든다. move() 선언부는 일치하지만, 실제 내용은 다르다. 일치하는 부분만 따로 뽑은 것 즉 공통부분만 따로 추출해서 Unit 클래스로 정의 공통부분을 뽑아서, 간결하게 코드의 중복을 제거할 수 있고 이것이 객체지향의 장점이다. abstract를 붙이면, 클래스에 맞춰서 몸통을 만들어주어야 하는 구나 생각할 수 있음 실제 인스턴스에 구현된 메서드가 호출된다. 리모콘타입이 Unit이고, abstract로 메서드가 구현되었기 때문에 실제 몸통을 구현한 메서드가..

자바의정석 2022.03.22

[자바의 정석 - 기초편] ch7-31,32 추상 클래스, 추상 메서드

ch7-31 추상 클래스(abstract classs) 다형성까지 이해를 해야지 이 시간 부터의 내용들이 이해가 간다. - 미완성 설계도. 미완성 메서드를 갖고 있는 클래스 멤버가 적거나, 부족한 / 미완성 메서드를 가진 경우 미완성메서드 (추상메서드) = 몸통이 없는 메서드 이러한 메서드를 가지고 있는 클래스가 추상 클래스 추상 메서드는 몸통이 없는 대신에 abstract를 붙이면 된다. - 다른 클래스 작성에 도움을 주기 위한 것, 인스턴스 생성 불가. 설계도가 완성되어야 제품이 생산될 수 있듯이 인스턴스 생성이 불가능하다. - 상속을 통해 추상 메서드를 완성해야 인스턴스 생성가능 구현 - 추상 메서드 몸통 만들기 몸통을 만들었을 때는 더 이상 추상 메서드가 아니다 ch7-32 추상 메서드(abstr..

자바의정석 2022.03.22

[자바의 정석 - 기초편] ch7-29,30 여러 종류의 객체를 배열로 다루기

ch7-29 여러 종류의 객체를 배열로 다루기 다형성의 장점 1) 다형적 매개변수 매서드의 매개변수로 조상타입의 참조변수를 사용해서, 하나의 메서드로 여러 타입의 객체를 받을 수 있는 것 2) 하나의 배열에 여러 종류 객체를 저장할 수 있다. - 조상 타입의 배열에 자손들의 객체를 담을 수 있다. 처음에는 참조형 기본값 null 이 저장되며, 참고로 Vector 클래스라는 것이 있는데 가변 배열 기능을 가지고 있는 클래스이다. Object[] 라는 멤버를 가지고 있고, 모든 종류의 객체를 저장할 수 있다. 최고 조상인 Object 이기 때문에 배열의 단점은 한 번 배열의 길이를 작성하면, 길이를 변경할 수 없다는 것이지만 Vector는 가변배열 기능 덕분에, 길이도 자유자재로 변경할 수 있다. packa..

자바의정석 2022.03.21

[자바의 정석 - 기초편] ch7-27,28 매개변수다형성

ch7-27 매개변수의 다형성 (장점) 1) 다형적 매개변수 2) 하나의 배열로 여러 종류 객체 다루기 - 참조형 매개변수는 메서드 호출시, 자신과 같은 타입 또는 자손타입의 인스턴스를 넘겨줄 수 있다. - 참조형 매개변수는 메서드 호출시, 자신과 같은 타입 또는 자손타입의 인스턴스를 넘겨줄 수 있다. (1) Tv t 조상 = new SmartTv(); 자손 (2) 참조변수의 형변환, 사용 가능한 멤버 갯수 조절 - 리모콘 바꾸기 (3) instanceof 연산자 - 형변환 가능여부 확인 다형성의 장점 메서드 하나로, Product p1 = new Tv(); 와 같이 여러 객체를 매개변수로서 사용할 수 있다. 참조변수와 문자열을 결합할 때는 p > p.toString 과 같이 변환한다. package c..

자바의정석 2022.03.21

[자바의 정석 - 기초편] ch7-26 instanceof 연산자

ch7-26 instanceof 연산자 - 참조변수의 형변환 가능 여부 확인에 사용, 가능하면 true 반환 - 형변환 전에 반드시 instanceof 로 확인해야 함 형변환이 안전한지 확인 조상자에 대해서도 참이 나온다 어떤 타입을 지정해주면, 그 타입으로 형변환이 가능한지 확인한다. instanceof를 이용해서 형변환이 가능한지 확인하는 과정이 필요하고 조상과 자기 자신에 대해서 참을 반환한다. Q. 참조변수의 형변환은 왜 하나요? A. 참조변수(리모콘)을 변경함으로써 사용할 수 있는 멤버의 갯수를 조절하기 위해서 객체도 그대로, 참조변수 값(주소값)도 그대로이다. 타입을 일치시키려고 쓰는 것 Q. instanceof 연산자는 언제 사용하나요? A. 참조변수를 형변환하기 전에 형변환 가능 여부를 확..

자바의정석 2022.03.21

[자바의 정석 - 기초편] ch7-24,25 참조변수의형변환(2)

컴파일러가 실제 실행했을 때 확인을 못하기 때문에 참조변수간의 형변환보다는 실제 가리키는 객체가 무엇인지가 중요하다. 즉 car 인스턴스를 가리키는 f1, f2는 FireEngine 객체에만 있는 water() 메서드를 실행할 수 없다. package ch07; class Car { int door; int color; void drive() { System.out.println("drive!"); } } class FireEngine extends Car { void water() { System.out.println("water!"); } } public class Ex7_7 { public static void main(String[] args) { Car c1 = new Car(); Car c2 ..

자바의정석 2022.03.21

[자바의 정석 - 기초편] ch7-24,25 참조변수의 형변환(1)

ch7-24 참조변수의 형변환 결론 - 사용할 수 있는 멤버의 갯수를 조절하는 것 - 조상 자손 관계의 참조변수는 서로 형변환 가능 기본형의 형변환은 값이 바뀌는 것이지만, 주소값이나 객체가 변환하는 것이 아니라 사용하는 멤버의 개수를 조절한다. 조상 자손 관계만 형변환이 가능하다. 형제관계 따위 없다. 조상 Car c = f ; (자손) - 이 경우에는 생략 가능 리모콘을 변경하는 것과 같다. 사용할 수 있는 멤버의 개수가 늘렸다 줄었다 하는 것 개념적으로 자손의 값이 조상의 값에 형변환 ( ) 없이 가능 Car car = null; FireEngine fe = new FireEngine(); car = fe; >> // car = (Car)fe; 에서 형변환이 생략됨 car 자체가 fe의 주소값이 가..

자바의정석 2022.03.20

[자바의 정석 - 기초편] ch7-23 다형성

객체지향에서 다형성이 가장 중요하다 ch7-23 다형성(polymorphism) - 여러 가지 형태를 가질 수 있는 능력 - 조상 타입 참조변수로 자손 타입 객체를 다루는 것 추상클래스나 인터페이스를 이해하기 위해서 여러번 반복하며, 6장부터 7장 다형성까지 계속 이해해야 한다. 여러가지 형태를 가질 수 있다는 것이 다형성 원래는 일치해야 하지만, 타입이 불일치하는 것도 괜찮다는 것 Tv와 SmartTv 스마트 티비를 티비 리모컨으로 다루는 것 즉 조상타입의 참조변수로 자손 타입 객체를 다루는 것 불일치할 때의 장점 2가지의 장점 때문에 이용한다. 참조변수 타입과 객체가 일반적으로 일치해야 하지만, 불일치할 때의 차이와 장점은? 객체는 SmartTv smartTv의 smartTv 리모컨으로는 7개의 기능..

자바의정석 2022.03.20

[자바의 정석 - 기초편] ch7-22 캡슐화

ch7-22 캡슐화와 접근 제어자 접근 제어자를 사용하는 이유 - 외부로부터 데이터를 보호하기 위해서 - 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서 iv 인스턴스 변수 public은 접근 제한이 없다. 외부에서 사용할 수 없게 접근 제어자 private을 사용한다. t.setHour와 같은 메서드를 사용해서, 범위를 제한할 수 있다. 엉뚱한 값이 들어가지 않도록! 직접 접근을 막고, 메서드를 통한 간접접근을 허용하는 것이 : 캡슐화 접근 제어자의 범위는 최대한 좁히는 것이 좋다.

자바의정석 2022.03.20
반응형