분류 전체보기

자바/자바의 정석 Ch.7 객체지향 프로그래밍 II

ch7-24,25 참조변수의형변환(2)

ch7-24,25 참조변수의형변환(2) "car."을 입력했을 때 사용할 수 있는 메서드가 나온다. 이 때 water는 존재하지 않는다. 최고 조상인 Obejct의 자손들도 나온다. 매개변수 car를 FireEngine 타입으로 형변환 하고나서, "fe."을 입력하면 사용할 수 있는 멤버가 늘어나 water()를 사용할 수 있다. 참조변수 car의 값이 null이어도 형변환은 가능하다. 하지만 car2.drive()를 호출했을 때 오류가 발생한다. NullPointerException은 아무 객체가 없는데 호출할 경우 발생하는 오류이다. java.lang.ClassCastException은 컴파일 에러가 아니라 실행 에러이다. (FireEngine)으로 형변환 하면 컴파일러는 참조변수 c가 실제로 Car..

자바/자바의 정석 Ch.7 객체지향 프로그래밍 II

ch7-24,25 참조변수의형변환(1)

ch7-24 참조변수의 형변환 ⭐ 참조변수의 형변환의 결과는 사용할 수 있는 멤버의 갯수를 조절하는 것이다. 멤버의 갯수 말고는 달라지는 점이 없다. 3.6 실수형을 정수형으로 형변환 하면 3으로 값이 바뀐다. 기본형의 형변환은 값이 바뀐다. 하지만 참조변수의 형변환은 사용할 수 있는 멤버 갯수만 변하고 주소값, 객체 등 전혀 바뀌는 것이 없다. FireEngine 인스턴스의 멤버는 상속받은 4개, 자신의 것 1개 총 5개가 있다. Car c = (Car)f;는 Car 타입의 참조변수 c에 참조변수 f를 대입한다. f는 FireEngine 타입으로 대입 연산자에서 양변의 타입이 일치하지 않기 때문에 형변환을 해줘야 한다. 참조변수 f와 FireEngine 인스턴스는 일치하지만, 참조변수 c는 Car 타입..

자바/자바의 정석 Ch.7 객체지향 프로그래밍 II

ch7-23 다형성

ch7-23 다형성 ⭐ 조상 타입 참조 변수로 자손 객체 타입 객체를 다루는 것 -> 외우기 Tv클래스를 상속받는 자식 SmartTv를 만든다. SmartTv의 멤버는 상속 받은 5개 + 자신의 것 2개 해서 총 7개의 멤버를 갖고 있다. 객체를 생성할 때 지금까지는 타입을 일치시켜 객체를 생성했다. 하지만 다형성에서는 타입이 불일치할 수 있다. 즉 조상 타입 참조 변수로 자손 객체를 생성할 수 있다. 참조변수와 객체의 타입이 일치할 때와 일치하지 않을 때의 차이는 뭘까? 왼쪽 그림은 참조변수의 멤버가 7개이고, SmartTv 멤버도 7개이므로 모든 객체를 사용할 수 있다. 오른쪽 그림은 참조변수가 Tv로 멤버가 5개이고, SmartTv 멤버가 7개 이어도 쓸 수 있는 건 5개이다. 조상 타입 참조 변수..

자바/자바의 정석 Ch.7 객체지향 프로그래밍 II

ch7-22 캡슐화

ch7-22 캡슐화와 접근 제어자 접근 제어자는 외부로부터 데이터를 보호하기 위해서 사용한다. 이를 캡슐화라 한다. Time 클래스를 만들었을 때 멤버를 public 제어자로 썼을 때 접근 제한이 없기 때문에 객체를 생성하고, t.hour = 25;로 직접 접근해서 값을 변경할 수 있다. int의 범위는 ±20억으로 사용은 할 수 있지만, hour는 시간으로 범위가 0~23로 제한되야 한다. 따라서 iv를 보호하기 위해서는 제어자를 public이 아니라 private를 사용해서 외부의 접근을 막는다. 메서드는 public으로 만들어 iv에 간접적으로 접근한다. t.hour에 대입 연산자를 사용해서 직접 접근하지 않고, t.setHour 메서드를 이용해서 간접 접근으로 바꾼다. 이런 식으로 직접 접근을 막..

doom

핵심이론 1과목-1(소프트웨어 설계) - ing

자료출처 : https://youtu.be/JhKOsZuMDWs [정보처리기사 필기 절대족보] 핵심이론 1과목-1(소프트웨어 설계) 4월 18일

자바/자바의 정석 Ch.7 객체지향 프로그래밍 II

ch7-21 접근제어자

ch7-21 접근제어자 접근 제어자는 private, (default), protected, public 중 1개만 사용 가능하다. private는 같은 클래스, (default)는 같은 패키지 내에서만 접근 가능하다. protected는 같은 패키지 + 다른 패키지의 자손 클래스에서 접근 가능하고, public은 접근 제한이 없다. class에는 public, (default) 만 붙일 수 있다. 멤버에는 private, (default), protected, public 4가지 다 가능하다. 실습 package 이름은 pkg1, class 이름은 MyParentTest로 생성한다. MyParent 클래스를 만들어, 접근 범위를 Test 한다. p.prv는 오류난다. private는 같은 클래스만 접근..

자바/자바의 정석 Ch.7 객체지향 프로그래밍 II

ch7-17~20 제어자, static, final, abstract

ch7-17 제어자(modifier) modifer는 클래스, 클래스의 멤버 앞에 붙어서 부가적인 의미를 갖는다. modifier 종류는 접근 제어자 4개를 기본으로 그 외 제어자가 있다. 접근 제어자는 1개만 붙일 수 있다. (default)는 아무것도 붙이지 않는다. 여러 제어자(접근 제어자는 하나만)를 같이 쓸 수 있다. 순서는 상관 없지만 접근 제어자를 맨 왼쪽에 쓰는 것이 국룰이다. static은 멤버 변수, 메서드에 붙일 수 있다. iv 앞에 붙으면 cv가 된다. int width -> static int width 'static { }'는 괄호 안에 static 변수를 초기화한다. 대입 연산자(=)를 사용해서 변수의 값을 초기화하는 것을 간단(명시적) 초기화이다. 괄호({ })를 사용해서 초..

자바/자바의 정석 Ch.7 객체지향 프로그래밍 II

ch7-15, 16 import문, static import문

ch7-15 import문 import문을 사용하면 package 이름을 생략할 수 있다. Date는 첫 글자가 대문자이기 때문에 class 이름이다. 예제의 package는 java.util이고 Date는 class이다. 원래는 클래스 앞에 package까지 적어줘야 하지만 import문을 사용하면 컴파일러가 Date class를 만났을 때 이 클래스가 java.util 폴더에 있는 걸 알게 된다. 이클립스에 단축키 'Ctrl+shift+o'를 사용해서 import 자동 추가할 수 있다. 같은 class 이름이 있다면 선택지를 준다. 핵심 클래스는 java.lang에 넣어둬서 import 하지 않고 사용할 수 있다. '*'는 package 안에 있는 모든 클래스를 의미한다. 컴파일러가 클래스를 만났는데..

자바/자바의 정석 Ch.7 객체지향 프로그래밍 II

ch7-12~14 패키지, 클래스 패스

ch7-12 패키지(package) 패키지는 서로 관련된 클래스의 묶음으로 java8 기준으로 약 4천개의 class가 있고 이를 묶지 않고 관리하려면 쉽지 않다. 많은 클래스를 작은 단위로 나눠 관리하는 것이 package이다. java 파일을 컴파일하면 클래스 파일(*.class)이 된다. 패지키는 폴더가 된다. 폴더 안에 많은 클래스 파일을 넣어 관리한다. class는 package안에 있고 class 이름은 package를 포함해야한다. String을 그냥 썼지만 실제 이름은 "java.lang.String"이다. rt.jar 파일의 rt는 run time으로 "실행 중"을 의미한다. java 프로그램을 실행할 때 필요한 class 파일을 묶음이 rt.jar이다. *.jar는 클래스 파일을 묶어서..

자바/자바의 정석 Ch.7 객체지향 프로그래밍 II

ch7-10,11 참조변수 super, 생성자 super()

ch7-10. 참조변수 super super는 객체 자신을 가리키는 참조변수이다. 인스턴스 메서드, 생성자에서만 사용가능하다. static 메서드에서는 사용 불가능하다. 이는 this와 비슷하다. this는 lv, iv를 구별할 때 사용했다. super는 조상 멤버와 자신 멤버를 구별할 때 사용한다. Child는 멤버가 Parent의 멤버 x 1개, 자신의 멤버 x, method 2개 해서 총 3개이다. 이를 객체로 그려보면 위와 같은데 같은 x이지만 하나는 조상의 것이어서 super.x이고 다른 하나는 this.x이다. 이름이 같더라도 객체는 따로 만들어진다. 이를 구분하기 위해서 super, this를 사용한다. c.method( )가 실행되면 첫 문장의 x는 가까운 20이 출력된다. this.x는 ..

돌맹이떼굴떼굴
'분류 전체보기' 카테고리의 글 목록 (9 Page)