분류 전체보기
-
학원 DAY 14. 메소드 재정의(오버라이딩)기록 2022. 10. 2. 17:30
변화가 발생했을 때 새로운 기능을 만들기보다는 기존의 기능을 더 좋게 만드는 게 일반적인데, 이때, 메소드 재정의 방식을 쓴다. 새 메소드를 정의하는 것은 해결책이 아니다. 그래서 ‘메소드 재정의’라는 것이 있다. 상위클래스에서 전달받은 메소드와 똑같은 이름으로 메소드를 다시 만드는 것이다. 프린터 printer = new 레이저프린터();에서 new 뒤에 어떤 프린터가 오든 프린터 printer로 작성해놓으면 메소드 이름을 변경하지 않아도 된다. 제일 최후에 재정의한게 실행이 된다. > 1. 상속관계여야 한다. 2. 클래스 형변환 3. 조상 클래스에도 내가 실행하고 싶은 기능이 있어야 한다. 즉, 같은 메소드를 갖고 있는 상위객체를 참조하고 있어야 한다. 아래 그림처럼 Object에는 print기능이 ..
-
학원 DAY 14. 강제클래스 형변환기록 2022. 10. 2. 16:59
> Car car1 = new MediumCar(); // 자동 클래스형변환 발생 Object obj = car1; // car1의 타입과 object타입이 다르다. 부모 중에서 Object를 찾는다. 부모객체를 참조하는 super가 있다. 자동 클래스 형변환이 된다. 따라서, obj는 Object를 바라보게 된다. car1의 참조변수가 LightCar를 바라보게 하고 싶다면 LightCar car2 = car1; // 자동형변환이 안됨. 부모중에 LightCar가 없기 때문에 LightCar car2 = (LightCar) car1; // 강제 클래스형변환 발생, LightCar를 바라보게 됨. > - 실제로 생성한 하위클래스 타입의 객체를 상위클래스 타입의 참조변수가 참조하고 있는 경우, 실제 생성한..
-
학원 DAY 13. 클래스 형변환기록 2022. 10. 2. 15:38
자바의 형변환 1. 기본자료형의 형변환 정수 -> 실수 double x = 10; // x의 값은 10.0 이다. double x = (double) 250/3; // 250을 250.0으로 변환한다. 실수 -> 정수 int x = (int) 3.14; // x의 값은 3이다. 정수 -> 문자 char x = 65; // x의 값은 ‘A'다. system.out.println((char) 65); // ‘A'가 출력된다. 문자 -> 정수 int x = 'A' // x의 값은 65다. int x = (int)'A' - 0 // x의 값은 65다. 정수 -> 정수 long x = 10; // x의 값은 4byte 10이다.(원래는 2byte였음) 2. 참조자료형의 형변환 Iphone p1 = new Ipho..
-
학원 DAY 13. 상속, SUPER기록 2022. 10. 2. 11:16
클래스의 상속 - 단일 상속만 허용한다. - 자신의 상위 클래스는 오직 하나만 허용된다. Iphone p = new Iphone(); - p참조변수로 Iphone객체를 참조한다. - p참조변수로 Iphone객체의 공개된 속성과 기능을 사용한다. - p참조변수로 Iphone객체의 상위객체에 정의된 공개된 속성과 기능을 사용한다. 1. p참조변수로 Iphone객체에서 속성이나 기능을 검색한다. 2. Iphone객체에 속성이나 기능이 존재하지 않으면, Iphone객체의 super로 참조되는 SmartPhone 객체에서 검색한다. SmartPhone객체에서 속성이나 기능이 존재하지 않으면, SmartPhone객체의 super로 참조되는 Phone객체에서 검색한다. Phone객체에서 속성이나 기능이 존재하지 않으..
-
학원 DAY12. 클래스와 클래스의 관계, 상속기록 2022. 10. 2. 10:18
has a 관계 (A has a B) - Car has a Engine : 자동차는 엔진을 포함하고 있다. 자동차는 엔진없이는 굴러갈 수 없다. (의존관계) - Department has a Employee : 부서는 사원을 포함하고 있다. (포함관계) - A클래스가 B클래스를 포함(의존)하는 관계이다. is a 관계 (A is a B) - ColorPrinter is a Printer : 컬러프린터도 프린터다. - A클래스가 B클래스의 종류 중 하나다. - B클래스가 동일한 A클래스들은 비슷한 특징과 기능을 가지고 있다. - B클래스는 상위클래스, A클래스는 하위클래스(더 구체적인 클래스)다. - A클래스는 B클래스로부터 공통속성과 공통기능을 상속받고, 자신의 고유속성과 고유기능을 구현하고 있다. (상..
-
학원 DAY12. 변수의 종류기록 2022. 10. 1. 23:44
변수의 종류는 총 4가지이다. 멤버변수, 정적변수, 매개변수, 지역변수 멤버변수, 인스턴스 변수, 프로퍼티, 속성 - 접근제한자를 붙일 수 있다. (멤버변수와 정적변수에만 붙일 수 있다.) - 객체 생성 이후에 참조변수를 통해서 사용가능하다. ex) SampleApp app = new SampleApp(); app.x = 100; - 생성된 객체 내부에 존재한다. - 객체가 존재하는 동안 계속 유지된다. - 모든 생성자, 모든 멤버 메소드에서 사용가능하다. (정적메소드에서는 사용안됨) 정적변수, 클래스변수 public static final double DEPOSITE_RATE = 0.031; - 접근제한자를 붙일 수 있다. - 클래스가 로딩되면 즉시 사용가능하다. - 클래스 로딩 후 사용가능해진 정적변..
-
학원 DAY12. STATIC기록 2022. 10. 1. 23:41
static변수와 static 메소드 정적 필드와 정적 메소드라고 부른다. 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버다. 객체 생성에 참여하지 않는다. 생성된 객체에 포함되어 있지 않다. 클래스의 로딩이 끝나면 정적변수와 정적메소드는 즉시 사용할 수 있다. 프로그램이 종료될 때까지 유지된다. 클래스 이름으로 식별되는 공간이 만들어지기 때문에 클래스 변수, 클래스 메소드라고도 부른다. 사용시에는 '클래스이름.변수이름', '클래스이름.메소드이름(인자, 인자, ..)'와 같이 앞에 클래스이름을 붙인다. 정적변수는 모든 생성자, 모든 멤버 메소드, 모든 정적 메소드에서 사용 가능하다. 정적변수는 상수를 정의할 때 주로 사용한다. 상수(final)는 한번 정해진 값을 변경할 수 없는 저장소다. ..
-
학원 DAY10~11. Getter, Setter 메소드기록 2022. 10. 1. 16:58
private 접근 제한자를 사용해서 필드의 값을 함부로 바꾸지 못하게 한다. 클래스를 작성할 때 웬만하면 private으로 필드를 선언해서 외부로부터 보호하고, setter와 getter메소드를 작성해서 필드값을 안전하게 변경, 조회하는 것이 좋다. 외부에서 마음대로 변경할 경우, 객체의 무결성이 깨질 수 있기 때문이다. 왼쪽 코드처럼 private을 쓰면 오른쪽 코드가 실행이 안된다. 그렇지만 private이어도 클래스 내부에서는 언제든지 접근이 가능하다. 생성자는 공개되어 있어서 사용이 가능하다. Getter 메소드 : 필드가 은닉화되어 있을 때, 필드의 값을 제공하는 메소드다. (보통, 정보를 담고 있는 객체는 getter메소드가 필요하다. 정보를 조회해야 하니까.) getter메소드 작성규칙 :..