인프런
자바 프로그래밍 입문 강좌 (renew ver.) - 초보부터 개발자 취업까지!!
색션 2. JAVA 객체
클래스 제작과 객체 생성
12-1 : 클래스 제작
클래스는 멤버 변수(속성), 메서드(기능), 생성자 등으로 구성된다.
package lec11Pjt001;
public class Grandeur //클래스 이름: 일반적으로 첫글자는 대문자로 한다.
	public String color;
    public String gear;   //멤버 변수(속성)
    public int price;
    
    public Grandeur() {   //생성자(클래스랑동일한이름)
   		System.out.println("Grandeur constructor");
    }
    
    public void run() {  //메서드(기능)  void는반환형.반환값이없다는것.반환값이있다면해당반환값으로String이면String
		System.out.println("--run--");
        	//return "Hello"; 반환값이있을경우String값반환
    }
    
    public void stop() {   //메서드(기능)
    	System.out.println("--stop--");
    }
    
 }
그렌저 클래스 생성
package pjtTest;
public class Grandeur {
	
	public String color;
	public String gear;
	public int price;
	
	public Grandeur() {  //Grandeur입력하고ctrl+space하면 constructor하면 자동 생성자 입력됨
		System.out.println("Grandeur constructor");
		
	}
	
	public void run() {
		System.out.println(" -- run() -- ");
	}
	
	public void stop() {
		System.out.println(" -- stop() -- ");
		
	}
	
	public void info() {
		System.out.println(" -- info() -- ");
		System.out.println("color : " + color);
		System.out.println("gear : " + gear);
		System.out.println("price : " + price);
	}
}
자전거 클래스 생성
package pjtTest;
public class Bicycle {
	
	public String color; //여기 위 두줄은 bicycle 밑은 기능
	public int price;
	
	public Bicycle() {
		System.out.println(" Bicycle constructor ");
	}
	
	public void info() {
		System.out.println(" -- info() -- ");
		System.out.println("color : " + color);
		System.out.println("price : " + price); //info만출력하면정보출력
	}
}
메인 클래스 생성은 조금 이따가
12-2 : 객체 생성
클래스로부터 'new' 이용해서 객체를 생성한다.
myCar1 -> Grandeur
주소 객체
레퍼런스
myCar2 -> Grandeur
주소 객체
레퍼런스
메인클래스 생성
package pjtTest;
public class Mainclass_ {
	
	public static void main(String[] args) {
		
		Grandeur myCar1 = new Grandeur(); //생성자constructor출력
		myCar1.color = "red"; //여기서부터세줄속성
		myCar1.gear = "auto";
		myCar1.price = 100;
		
		myCar1.run(); //여기서부터세줄기능
		myCar1.stop();
		myCar1.info();
		
	}
}
Grandeur constructor
-- run() --
-- stop() --
-- info() --
color : red
gear : auto
price : 100
package pjtTest;
public class Mainclass_ {
	
	public static void main(String[] args) {
		
		Grandeur myCar1 = new Grandeur(); //생성자constructor출력
		myCar1.color = "red"; //여기서부터세줄속성
		myCar1.gear = "auto";
		myCar1.price = 100;
		
		myCar1.run(); //여기서부터세줄기능
		myCar1.stop();
		myCar1.info();
		
		
		Grandeur myCar2 = new Grandeur(); 
		myCar2.color = "yellow"; 
		myCar2.gear = "auto";
		myCar2.price = 500;
		
		myCar2.run(); 
		myCar2.stop();
		myCar2.info();
		
	}
}
Grandeur constructor
-- run() --
-- stop() --
-- info() --
color : red
gear : auto
price : 100
Grandeur constructor
-- run() --
-- stop() --
-- info() --
color : yellow
gear : auto
price : 500
package pjtTest;
public class MainClass_Bicycle {
	
	public static void main(String[] args) {
		
		Bicycle myBicycle = new Bicycle();
		myBicycle.color = "red";
		myBicycle.price = 100;
		
		myBicycle.info();
		
	}
}
Bicycle constructor
-- info() --
color : red
price : 100
자전거 클래스 수정
package pjtTest;
public class Bicycle {
	
	public String color; 
	public int price;
	
	public Bicycle() {
		System.out.println(" Bicycle constructor - 1");
	}
	
	public Bicycle(String c, int p) {
		System.out.println("Bicycle constructor - 2");
		color = c;
		price = p;
	}
	
	public void info() {
		System.out.println(" -- info() -- ");
		System.out.println("color : " + color);
		System.out.println("price : " + price); 
	}
}
자전거 메인 클래스
package pjtTest;
public class MainClass_Bicycle {
	
	public static void main(String[] args) {
		
		Bicycle myBicycle = new Bicycle("red", 100);
		myBicycle.info();
		
	}
}
Bicycle constructor - 2
-- info() --
color : red
price : 100
자전거 클래스 생성할 때 이미 값을 다 줬기 때문에 별도로 밑에 안 적음
package pjtTest;
public class MainClass_Bicycle {
	
	public static void main(String[] args) {
		
		Bicycle myBicycle = new Bicycle("red", 100);
		myBicycle.info();
		
		myBicycle.color = "yellow";
		myBicycle.info();
		
	}
}
Bicycle constructor - 2
-- info() --
color : red
price : 100
-- info() --
color : yellow
price : 100
색상 노랑으로 바꿀 수도 있음
생성자 여러 개 생산해서 바꿀 수 있음