Beny's Study
24_1. [강의] 객체지향 기본 생성(생성자,생성) 본문
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차 변형 등을 할 경우
민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."
'[JAVA] > 07. 객체지향' 카테고리의 다른 글
24_2. [강의] 객체배열 (0) | 2022.05.28 |
---|---|
10. abstract (추상의 ,미완의) (0) | 2022.04.27 |
23.Static(클래스의, 공통적인) (0) | 2022.04.27 |
22. 인스턴스 메서드 & 클래스 메서드 (0) | 2022.04.27 |
21. 기본형매개변수&참조형매개변수 (0) | 2022.04.27 |