[Java의 정석]Chapter6.객체지향 프로그래밍(05~07)
Chapter 6. 객체지향 프로그래밍
05. 한 파일에 여러 클래스 작성하기
- 하나의 소스파일에 하나의 클래스만을 정의하는 것이 보통이지만, 하나의 소스파일에 둘 이상의 클래스를 정의하는 것도 가능
📍 주의 : 소스파일의 이름은 public class의 이름과 일치
-만약 소스파일 내에 public class가 없다면, 소스파일의 이름은 소스파일 내의 어떤 클래스의 이름으로 해도 상관없음
올바른 작성 예)
<Hello2.java>
public class Hello2 {} //Public class가 있는 경우,
class Hello3 {} //소스파일의 이름은 반드시 public class의 이름과 일치
<Hello2.java>
class Hello2 {} //public class가 없는 경우,
class Hello3 {} //소스파일의 이름은 'Hello2.java.''Hello3.java' 둘 다 가능
잘못된 작성 예)
<Hello2.java>
Public class Hello2 {} //하나의 소스파일에 둘 이상의 public class가 존재하면 안됨
Public class Hello3 {} //각 클래스를 별도의 소스파일로 나눠서 저장하거나
둘 중의 한 클래스에 'public'을 삭제
<Hello3.java>
public class Hello2 {} //소스파일의 이름이 public class의 이름과 불일치
class Hello3 {} //소스파일의 이름을 'Hello2.java'로 변경해야함
<hello2.java>
public class Hello2 {} //소스파일의 이름과 public class의 이름이 불일치
class Hello3 {} //대소문자 구분하므로 맞춰 적어야함
- 소스파일(.java)과 달리 클래스파일(.class)은 클래스마다 하나씩 만들어짐
ex)
올바른 작성 예) 에 제시된 'Hello2.java'를 컴파일하면 'Hello2.class'와 'Hello3.class' 두 개의 클래스 파일이 생성
06. 객체의 생성과 사용
-
클래스로부터 인스턴스를 생성하는 방법
클래스명 변수명; //클래스의 객체를 참조하기 위한 참조변수를 선언 변수명 = new 클래스명(); //클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장 Tv t; //Tv 클래스 타입의 참조변수 t를 선언 t = new Tv(); // Tv인스턴스 생성 후, 생성된 Tv인스턴스의 주소를 t에 저장
▶ Tv클래스로부터 인스턴스를 생성하고 인스턴스의 속성(channel)과 메서드(channelDown())를 사용하는 방법을 보여주는 예제
▶ 예제 단계별로 살펴보기
-
Tv t;
: Tv 클래스 타입의 참조변수 t 선언. 메모리에 참조변수 t를 위한 공간이 마련. 아직 인스턴스가 생성되지 않았으므로 이 참조변수로 할 수 있는 것은 없음 -
t= new Tv();
: 연산자 new에 의해 Tv클래스의 인스턴스가 메모리의 빈 공간에 생성. 주소가 0x100인 곳에 생성되었다고 가정하면 멤버변수는 각 자료형에 해당하는 기본값으로 초기화.
color는 참조형이므로 null로, powoer는 boolean이므로 false로, channel은 int이므로 0으로 초기화
: 대입연산자(=) 에 의해 생성된 객체의 주소값이 참조변수 t에 저장. 이제 참조변수 t를 통해 Tv인스턴스에 접근 가능 -
t.channel = 7;
: 참조변수 t에 저장된 주소에 있는 인스턴스의 멤버변수 channel에 7을 저장. 인스턴스의 멤버변수(속성)를 사용하려면'참조변수.멤버변수'
의 형식 -
t.channelDown();
: 참조변수 t가 참조하고 있는 Tv인스턴스의 channelDown메서드를 호출. channel Down메서드는 멤버변수 channel에 저장되어 있는 값을 1 감소시킴(channelDown()에 의해 channel의 값은 7에서 6이 됨) -
System.out.println("channle is " + t.channel);
: 참조변수 t가 참조하고 있는 Tv인스턴스의 멤버변수 channel에 저장되어 있는 값을 출력. 현재 channel의 값은 6.
🍓 인스턴스는 참조변수를 통해서만 다룰 수 있으며,
참조변수의 타입은 인스턴스의 타입과 일치해야 함
07. 객체의 생성과 사용 예제
- 같은 클래스로부터 생성되었을지라도 각 인스턴스의 속성(멤버변수)은 서로 다른 값을 유지할 수 있으며, 메서드의 내용은 모든 인스턴스에 대해 동일
▶ Tv클래스의 인스턴스 t1과 t2를 생성 후, 인스턴스 t1의 멤버변수인 channel의 값을 변경함
Author And Source
이 문제에 관하여([Java의 정석]Chapter6.객체지향 프로그래밍(05~07)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wendy1126/Java의-정석Chapter6.객체지향-프로그래밍0507저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)