본문 바로가기
728x90
반응형

자바48

22) 단일상속(single inheritance) 22) 단일상속(single inheritance) 1. 정의 -java는 단일(하나의 부모만 상속) 상속만을 허용한다(C++은 다중상속 허용) 2. 에러 예시 class TvDVD extends Tv, DVD{ //에러. 조상은 하나만 허용됨. … } 3. 왜 쓰면 안될까? Tv클래스에 power() 메서드가 있고, DVD클래스에도 power()메서드가 있으면 TvDVD에서 power메서드 호출 시, 이름이 같아서 둘 중 어디 거를 써야 할지 모르는 상황이 발생한다(충돌) 4. 특징 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다. 충돌 문제가 발생하기 때문에 Tv는 상속시키고 DVD는 포함시킨다. 주의할 점은 DVD에 들어있는 메서드 사용 시, TvDVD클래스에서 메서드를 새로 생성해.. 2021. 5. 31.
21) 객체지향-클래스 간의 관계-포함(Composite) 21) 객체지향-클래스 간의 관계-포함(Composite) 1. 정의 -클래스의 멤버로 참조 변수를 선언하는 것 -작은 단위의 클래스를 만들고, 이 들을 조합해서 클래스를 만듦 2. 예시 Circle클래스의 3개의 변수를 선언합니다. 이제 이 클래스를 가지고 객체를 만들어볼게요. 이걸 구조화해볼게요. 그림으로 나타내 봅시다. Circle의 참조 변수 c는 3개의 변수를 가지고 있습니다. Point클래스로 x, y변수를 선언하고, Circle클래스로 Point객체를 생성하고 반지름을 추가해줍니다. 이제 Circle의 객체를 만들어줄게요. 이걸 구조화해볼게요. 그림으로 나타내 봅시다. 클래스 Test에서 객체를 생성해준 Cirlce의 참조 변수 c는 Point객체와 반지름 r을 포함하고 있습니다. Point.. 2021. 5. 31.
20)객체지향-클래스 간의 관계-상속(Inheritance) 20) 객체지향-클래스 간의 관계-상속(Inheritance) 1. 정의 -기존의 클래스로 새로운 클래스를 작성하는 것(코드의 재사용) -두 클래스를 부모와 자식의 관계 2. 형식 class 자식클래스 extends 부모클래스 { … } extends: 확장하다(즉, 'Parent를 확장해서 Child를 만들겠다'라는 뜻입니다) 3. 실제 구현 4. 특징 -자손은 '조상'의 모든 멤버를 상속받는다(생성자, 초기화블럭 제외) (‘부모’가 아니라 ‘조상’이라고 쓴 이유는 부모의 부모 즉, 할머니 할아버지 재산까지 상속받기 때문. 선택의 여지도 없고 그냥 주면 다 받아야 함, 얼굴 마음에 안 들어도 어쩔 거야.. 주신대로 물려받아야지) -자손의 멤버 개수는 조상보다 적을 수 없다(=같거나 많다) 5. 예시 조.. 2021. 5. 29.
18) 객체지향-생성자 this(), 참조변수 this 18-1) 생성자 this() -생성자에서 다른 생성자 호출할 때 사용 Car()의 생성자가 3개 있습니다. 1, 2 생성자가 3번째 생성자를 호출한 것입니다. 원래의 형태는 Car("white",auto",4)가 맞는데, Car를 쓰지 않고 this로 씁니다. 그냥 규칙입니다. 외우세요. this생성자의 실제 의미는 Car(String color, String gearType, int door)를 호출하라는 소리입니다. 18-2) 생성자 호출 시 주의사항 -다른 생성자 호출시 첫 줄에서만 사용 가능 Car(String color){ door = 5; Car(color, "auto",4); //에러! } 생성자끼리 호출할 땐 반드시 첫 번째 줄에서만 호출 가능합니다. 위에 또 다른 에러가 있죠? 다른 생.. 2021. 5. 25.
17) 객체지향-생성자(constructor)와 기본생성자(default constructor) 17-1) 생성자(constructor) -인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메서드' -인스턴스 생성 시 수행할 작업(iv초기화)에 사용 메서드인데, 객체가 생성될 때마다 초기화 해주는 메서드라고 보면 됩니다. Time t = new Time();//객체생성 t.hour = 12; t.minute = 34; t.second = 56; 여기서 시간, 분, 초는 처음에 0으로 기본으로 초기화됩니다. 하지만 우리가 시간, 분 초의 값을 12, 34, 56을 기본값으로 정해주는 겁니다. 근데 어떠세요? 매번 시, 분, 초를 세 줄로 적어야 하는 불편함이 있습니다. 그래서 Time t = new Time(12,34,56); //객체 생성과 초기화 이렇게 객체생성과 초기화를 한 줄로 쓰면 어떠세요.. 2021. 5. 25.
16)객체지향-오버로딩(overloading) 16-1) 오버 로딩이란? 한 클래스 안에 같은 이름의 메서드 여러 개를 정의하는 것(메서드:메서드 이름=n:1) overloading:과적하다 대표적인 예로 println을 들 수 있습니다. void println() void println(boolean x) void println(char x) void println(char [] x) 등등.. 16-2) 오버 로딩이 성립하기 위한 조건 ①메서드 이름이 같아야 한다. ②매개변수의 개수 or 타입이 달라야 한다. ③반환 타입은 영향 없다. ① 메서드 이름 같음 ② 개수는 같으니 타입이 달라야 하는데 int로 타입도 똑같음(오류) ③ 반환 타입 상관없음 ① 메서드 이름 같음 ② 개수는 같으니 타입이 달라야 하는데 int로 타입도 똑같음(오류) ③ 반환 .. 2021. 5. 20.
15)객체지향-static메서드와 인스턴스 메서드(클래스 메서드)/static method and instance method(class method) 15-1) 인스턴스 메서드란? -인스턴스 생성 후, '참조변수.메서드이름()'으로 호출 -인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드 -메서드 내에서 인스턴스 변수(iv) 사용 가능 15-2) static 메서드(클래스 메서드)란? -객체 생성 없이 호출(ex. Math.random()의 경우 객체 생성 없이 사용했었죠?) -인스턴스 멤버(iv, im)와 관련 없는 작업을 하는 메서드 -메서드 내에서 인스턴스 변수(iv) 사용불가 15-3) 인스턴스 메서드와 static메서드의 차이점 반환 타입(long), 메서드 이름(add)은 같은데, 매개변수가 다릅니다. static메서드에서 매개변수는 지역변수(lv)죠? 그럼 'return a+b'에서 a, b는 인스턴스 변수일까요 지역변수일까요? 지.. 2021. 5. 20.
14)객체지향-참조형 매개변수(ReferenceParameter), 참조형 반환타입(Reference Return Type) 14-1) 참조형 매개변수(ReferenceParameter) 기본형 매개변수: 변수의 값을 읽기만 할 수 있다. (read) 참조형 매개변수: 변수의 값을 읽고 변경할 수 있다.(read & write) 14-2) 참조형 매개변수 예제 참조 변수 d의 주솟값을 change메서드의 매개변수로 전달. 주솟값이 0x100이므로 변수x를 가리킴. d.x의 값이 1000으로 바뀜. 기본형 매개변수의 경우, 읽기만 가능해서 인스턴스 변수 x의 값을 읽어오기만 했지만, 참조형 매개변수의 경우, 읽고, 쓰기까지 가능해서 인스턴스 변수 x의 값을 바꿀 수도 있다. 왜? 참조변수의 주솟값을 가지고 있어서. 14-3) 참조형 반환 타입 그림을 무조건 그려보시기 바랍니다. 2021. 5. 19.
13)객체지향-기본형 매개변수(Primitive Parameter) 13-1) 기본형 매개변수? 참조형 매개변수? 매개변수에는 기본형 매개변수와 참조형 매개변수가 있는데요, 그 차이를 잘 아셔야 합니다. 기본형 매개변수: 변수의 값을 읽기만 할 수 있다. (read) 참조형 매개변수: 변수의 값을 읽고 변경할 수 있다.(read & write) 13-2) 예제 이 코드를 보고 순서대로 그리면 다음과 같이 됩니다. 매개변수 x와 지역변수 x는 다르다는 것을 기억하세요. 지역변수 x의 값이 바뀌어도 매개변수 x의 값은 따라 바뀌지 않습니다. 기본형 매개변수는 읽기만 가능하기 때문입니다. 그리고 코드를 보고 그림을 그리는 연습을 꼭 하시길 바랍니다. *유튜브 남궁성 선생님의 `자바의 정석`을 참고하여 만들었습니다* *자세히 보고 싶은 분들은 유튜브 가서 보시면 됩니다* 2021. 5. 18.
728x90
반응형