본문 바로가기
728x90
반응형

자바의정석21

27) import문, static import 27) import문, static import문 1. import문 -클래스를 사용할 때 패키지 이름을 생략할 수 있다. -컴파일러에게 클래스가 속한 패키지를 알려준다. 원래는 Data라는 클래스는 java-util패키지 안에 있는 클래스라서 java.util.Data라고 적는 게 올바른 표현이다. 하지만 모든 클래스를 이렇게 적다 보면 시간도 많이 걸리고 귀찮다. 그래서 import문을 선언하여 이 클래스가 어떤 패키지 안에 들어있는지 생략할 수 있다. 단축기 ctrl+shift+o를 사용하면 import문이 자동으로 생성된다. 똑같은 클래스가 있으면 어떤 패키지인지 선택하는 창이 나온다. 그럼 맞는 패키지를 선택하면 된다. 어? 근데 지금까지 String클래스는 패키지 이름을 매번 쓰지 않았죠? -.. 2021. 6. 7.
23) Object클래스 23) Object클래스 1. 정의 -모든 클래스의 조상 2. 특징 -부모가 없는 클래스는 자동으로 Object클래스를 상속받게 된다. -모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다(toString(), equals(Object obj), hashCode() 등등) 3. 예시 -부모가 없는 클래스는 자동으로 Object클래스를 상속받게 된다. Tv클래스는 부모를 상속받지 않으니, 자동으로 Object를 상속받게 된다. SmartTv는 부모클래스 Tv를 상속받는다. -모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다(toString(), equals(Object obj), hashCode() 등등) toString이라는 메서드를 만들지 않았지만, 자동으로 Obj.. 2021. 5. 31.
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.
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
반응형