은닉화, 캡슐화 - 클래스 분리
FileInfo
MyClassMain.java
MyClass.java
소스코드
MyClassMain.java
public class MyClassMain {
public static void main(String[] args) { //참조변수의
선언 = 인스턴스
생성 MyClass mc1 = new MyClass(); //접근지정자가 private이기
때문에
호출
불가능 (은닉화되어
있음) //mc1.name = "홍길동"; // ERROR-he field MyClass.name is not visible //mc1.age = 18; // ERROR-he field MyClass.name is not visible //메소드(method)를
통해서만
접근가능 mc1.setName("홍길동"); mc1.setAge(18); System.out.println(mc1.getName() + " / " + mc1.getAge()); MyClass mc2 = new MyClass("일지매"); System.out.println(mc2.getName() + " / " + mc2.getAge()); MyClass mc3 = new MyClass("태권브이", 30); System.out.println(mc3.getName() + " / " + mc3.getAge());
} } |
https://github.com/10zeroone/study_Java/blob/master/ch06-object1/src/MyClassMain.java
MyClass.java
public class MyClass { //은닉화 (접근지정자를 private으로
지정) private String name; private int age; /* 디폴트
생성자: 생성자를
명시하지
않으면
컴파일러가 default 생성자를
자동
삽입 * 그러므로
인자가
있는
생성자를
만들
경우
디폴트
생성자가
필요한
경우 default 생성자를
명시해야
됩니다. * */ public MyClass(){} /*Exception in thread "main" java.lang.Error: Unresolved compilation problem: The constructor MyClass() is undefined*/ //인자가
전달되는
생성자 public MyClass(String n){ name =n; } // 생성자
오버로딩: 메서드
오버로딩과
동일한
규칙을
적용하여
생성자
오버로딩
수행 // public MyClass(String a){} public MyClass(String n, int a){ name = n; age = a; System.out.println("객체가
생성되었습니다."); } //캡슐화 public void setName(String n){ name =n; }
public void setAge(int a){ age = a; } public String getName(){ return name; } public int getAge(){ return age; } } |
https://github.com/10zeroone/study_Java/blob/master/ch06-object1/src/MyClass.java
출력결과