Beny's Study

24_1. [강의] 객체지향 기본 생성(생성자,생성) 본문

[JAVA]/07. 객체지향

24_1. [강의] 객체지향 기본 생성(생성자,생성)

76beny 2022. 5. 28. 22:06
 

 

package com.kh.ex02.fisrt_object;

package com.kh.ex02.fisrt_object;
//class부분 내용


public class FirstObject {
	public static void main(String[] args) {
	Person	 person = new Person(); 
		person.name = "홍길동"; 
		person.age = 31;
		person.phoneNum = "010-1234-5678";
		person.pID = "123456-123456";
		
		System.out.println(person.name);
		System.out.println(person.age);
		System.out.println(person.phoneNum);
		System.out.println(person.pID);

	}
		
}

Person  person = new Person();

객체를 생성하는 키워드 => 'new'


person.name = "홍길동";

person객체의 name변수


person.age = 31;

person객체의 age변수


person.phoneNum = "010-1234-5678";

person객체의 phoneNum변수


person.pID = "123456-123456";

person객체의 pID변수

 

[출력]

홍길동
31
010-1234-5678
123456-123456

 

 

package com.kh.ex03.object_app; _ class Person

package com.kh.ex03.object_app;

public class Person {
	//속성부(필드) (멤버변수 선언하는곳)
	public String name;//이름// 만약 private이면 Run클래스에서 오류발생!  접근할수 없기 때문에!
	public int age;//나이
	public String phoneNum;//폰번호
	public String pID;//주민번호
	
	//생성자란?
	//객체가 생성될때 호출되는 특별한 메소드
	//객체에 생성 초기화를 시키거나 생성시 사용자의 초기화 메소드를 호출할때 사용
	public Person() { //생성자
		name = "이름없음";//멤버변수 name 초기화 
	}
	
	//setter//외부로 부터 이름을 가져온다
	public void setName(String name) {	//지역변수 name=> setname안에서만 쓰임! 
		this.name = name;//멤버변수 name = 지역변수name(파라메터)
	}
	
	//getter //이름을 외부로 내보낸다
	public String getName() {
		return name;
	}
	
}

 

package com.kh.ex03.object_app; _ class Person2

package com.kh.ex03.object_app;
//Person의 제대로 된 버전

public class Person2 {
	
	private String name; // 이름
	private int age; 	// 나이
	private String phoneNum; // 전화번호
	private String pID; 	 // 주민번호
	
	public Person2() { // 생성자
		name = "이름 없음";
	}
	
	
	// 인자있는 생성자를 만드는 방법 (외부로 부터 setter받을것이다)
	
	//1. 지역변수, 로컬변수의 이름을 일치 시키지 않는 방법(현업사용X)
    //깔끔은 하지만 _가 계속 들어가서 공수가(불필요한 없무) 계속 생김, 한마디로 비효율적!
    
//	public Person2(String _name, int _age, String _phoneNum, String _pID) {
//		// 외부 생성할때 객체의 초기값을 입력받는 생성자 //위의 private에서 받아옴
//		name = _name;
//		age = _age;
//		phoneNum = _phoneNum;
//		pID = _pID;
//	}
	
    //2. this 키워드를 통해 멤버변수 접근!
	// 인자있는 생성자를 만드는 방법
	public Person2(String name, int age, String phoneNum, String pID) {
		// 생성할때 객체의 초기값을 입력받는 생성자
		this.name = name;
		this.age = age;
		this.phoneNum = phoneNum;
		this.pID = pID;
	}
	
	// getter - 이름 - readOnly
	public String getName() {
		return name;
	}
	
	// setter - 전화번호 - 수정가능한 변수
	public void setPhoneNum(String phoneNum) {
		this.phoneNum = phoneNum;
	}
	
	//결과로 출력할 부분 작성
	public String toString() {
		String result = "";
		result += "이름 : " + name +"\n";
		result += "나이 : " + age +"\n";
		result += "전화번호 : " + phoneNum +"\n";
		result += "주민번호 : " + pID +"\n";
		return result;
	}
	
}
//run으로 호출

 

package com.kh.ex03.run_object; _ Person & Person2 출력부

package com.kh.ex03.run_object;


import com.kh.ex03.object_app.Person; 
// import를 통해 외부 객체만 사용하는 방법 << 이게 표준적
import com.kh.ex03.object_app.Person2;


public class Run {
	public static void main(String[] args) {
//		Person person = null;//import문 필요
//		Person2 person2 = null;//import문 		
		
		//[출력1]
	 	// Type   변수명
		Person person = new Person(); // 객체 생성하는 법!//Person누르고 F3누르면 해당 페이지로 이동
		System.out.println(person.name); 
		System.out.println(person.age); 
		System.out.println(person.phoneNum);
		System.out.println(person.pID); 
		System.out.println("------------------------------------");

		[출력2]
		// 멤버변수 접근!
		person.name = "홍길동";
		System.out.println(person.name); // 홍길동
		System.out.println("------------------------------------");


		[출력3]
		// setter, getter 접근! -> 메소드 접근
		person.setName("최길동");//외부로부터 최길동을 받아온다
		System.out.println(person.getName());//외부로 내보낸다
		System.out.println("------------------------------------");
		
        [출력4]
		Person2 person2 = new Person2("김길동", 31, "010-1234-5213", "960101-124122");
		// 앞페이지의[person2.java]의  person2
		System.out.println(person2.getName());// 이름 : 김길동
		System.out.println(person2.toString());// 나이 : 31
		person2.setPhoneNum("010-7777-8888");// 전화번호 : 010-1234-5213, 010-7777-8888
		System.out.println(person2.toString());//주민번호 : 960101-124122
		

	}
}

import문에 * 사용하면?

=> *은 와일드카드로, 해당 패키지에 존재하는 모든 Class Import가능함!

 

new Person();의 person더블클릭 후 F3

=>  동일한 Person 으로 이동함.

 

Person.  으로 입력하려고 할 경우!

=> Person이 가지고 있응 객체의 종류들이 팝업창에 뜸((Person.java)에서 생성한 객체들)

 

[출력1]

이름없음
0
null
null

 

[출력2]

홍길동

 

[출력3]

최길동

 

[출력4]

이름 : 김길동
나이 : 31
전화번호 : 010-1234-5213
주민번호 : 960101-124122

 

 

 

 

 


"본 인터넷 사이트 내의 모든 이미지, 문구, 콘텐츠, 내용 등에 대한 저작권은 76beny에게 있습니다.

이를 무단으로 도용, 복사, 전재, 재배포, 2차 변형 등을 할 경우

민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."