package ch05;

public class Ch0501
{
 /*
  * 클래스 : 설계도라 생각하며 됨다.
  * 멤버변수 : 클래스에 속해있는 글로벌변수
  * 멤버함수 : 클래스에 속해있는 멤버함수
  * 개체 : 설계도에 입각하여 생산된 제품 즉 실체
  * 인스턴스 : 생성자에 의해 초기화된 변수
  * 속성 : 인스턴스개체변수안의 멤버변수를 의미
  * 메서드 : 인스턴스개체변수안의 멤버함수를 의미
  * */
 public static void main(String[] args)
 {
  //개체변수의 선언
  Car carA;
  //개체변수의 초기화( car개체변수:인스턴스)
  //개체변수 = new 클래스명() --> 자연스레 생성자 함수를 호출하게 된다.
 
  /* 초기 생성자 함수에 name, owner
  carA = new Car();
  //carA : 인스턴스
  carA.name ="소나타";
  carA.owner="홍길동";
  //carA.name : 속성
   */  
  carA = new Car("소나타","홍길동");

  carA.print();
  //carA.print() : 메소드
 
/*  //생성자 초기화 활것
  Car carC = new Car();
  //name에 좋아하는 자동차 대입
  carC.name = "티코";
  //owner에 이름 대입
  carC.owner = "아무게";
  //carC멤버함수 print()호출
  carC.print();*/    
 }
}

**** car.java ****
package ch05;

public class Car
{
 //Java는 file당 한 class만 존재.(c는 여러개 가능.)
 
 //현재는 public 용어 신경쓰지 말고...
 //Car클래스의 멤버변수 owner
 public String owner;
 
 //Car클래스의 벰버변수 name
 public String name;
 
 //Car클래스의 멤버함수 print() 정의
 public void print()
 {
   System.out.println("Owner : "+owner+", name : "+name );
 
 }
 
 //반환형 없는 함수이며 클래스이름과 같은 이름을
 //같은 함수를 생성자함수라고 부른다.
 //아래와 같은 이자없는 생성자는 프로그래머가
 //지정하지 않앙도 자여스레 컴파일러가 생상자함수를
 //강제로 만들어준다.
 
 //public void Car() // 생성자 함수가 아니라 일반함수로 인식.
 public Car(String name, String owner)
 {
  // TODO 자동 생성된 생성자 스텁
  System.out.println("Car생성자 실행");
  //매개변수와 멤버변수 이름이 같을때, 매개변수로 인식됨.
  //name = name;
  //반드시 클래스의 멤버변수를 가르킬때에는
  //this.멤버변수명을 사용하여야 한다.
  this.name = name;
  this.owner = owner;
  //생성자를 이용하여 멤버변수 조작하는 방법...이였음.
 
  //생성후 new Mission() 객체 일일이 생성해야하므로, 미리 호출될때 생성.
  mission = new Mission();

 }
 
 // Mission 클래스 추가후
 //멤버변수에 사용자 정의 클래스 레퍼런스를 지정할경우
 //Car클래스는 Mission클래스에 대해 소유관계를 맺는다고 한다.(집합)
 public Mission mission;
}

**** Mission.java *****
package ch05;

public class Mission
{
 //다중 객체 정의 설명...
 public String type;
 public int level;
 
 public void print()
 {
  System.out.println("미션타입 : "+type+", 기어 : "+level+"단");
 }
}

Posted by 말없제이
,