객체 3대 특징
1. 은닉성(캡슐화)
:외부와의 차단으로 변수들을 관리 할 수 있다
class의 내부에서 접근(처리)이 가능하도록 접근지정자로 제어할 수 있다
값을 바꾸게 할 수도 접근금지(읽기전용)시킬수도 있음.
setter/getter
private(개인적인) -> member variable에 설정: class만에서 만 지정되는 속성
public(대중적인) -> member method에서 설정
protected(특정) -> 상속에 관련
class member variable(변수) -> 99% private
메소드 70%정도가 public
2. 상속성
3. 다형성
main
MyClass cls = new MyClass();
MyClass = 클래스형 , heap에 저장
cls = instance(객체)
//cls.number = 123;
에러, 은닉성에 위배
cls.name = "Hi";
에러는 없지만 은닉성 위배
System.out.println(cls);
System.out.println(cls.getThis());
//답 : MyClass MyClass(int number)
//답 : public MyClass(int number, String name)
Class
class member variable(변수) -> 99% private
메소드 70%정도가 public
this.변수
this.number = number;
//생성 후 private int number의 변수, 외부에서 들어온 변수와 이름을 동일하게 사용하고 싶을때
//Ex)
public void setNumber(int number) {
this.number = number;
}
** setter와 getter
Class 변수설정시 private을 붙여 클래스 외부에서 접근할
수 없도록 셋팅 했을 때,
대신 getter와 setter메소드를 추가하면 이 멤버변수들의 값을 어디서나 읽고 변경할 수 있도록 됨(main에서 사용가능)
메인
t.setChannel(10);
System.out.println("CH:"+t.getChannel());
클래스
private int channel;
public int getChannel() {
return channel;
}
public void setChannel(int channel) {
this.channel = channel;
}
메인에서 채널 수정이 가능하다
클래스 전체
public class MyClass {
//clss -> 변수는 외부에서 접근을 시키지 않는다
// class member variable(변수) -> 99% private
private int number; //내부에서만(MyClass)에서만 접근 가능
public String name; //외부접근은 무조건 가능
//class member method
//메소드 70%정도가 public
//외부에서 호출 안되는 함수는 public 대신 private를 사용해도 됨(Ex random()..)
public void funsc() { //처리
this.method();
}
public MyClass getThis() {
return this;
}
public void method() {
}
public int getNumber() {//매개변수 0번째에 존재하고 있는 자기자신의 참조 =public int getNumber()
return number;
}
public void setNumber(int number) {
this.number = number; //생성 후 private int number의 변수, 외부에서 들어온 변수와 이름을 동일하게 사용하고 싶을때
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
'JAVA > 객체 코드' 카테고리의 다른 글
객체 3대 특징 (0) | 2020.06.03 |
---|---|
constructor 생성자 (0) | 2020.06.02 |
객체 // 야구게임 (0) | 2020.06.01 |
객체//Sorting (0) | 2020.06.01 |
Object Oriented Programming(객체지향 프로그래밍) 이론 (0) | 2020.06.01 |