MyClassMain-은닉화, 캡슐화 - 클래스 분리

CODEDRAGON Development/Java

반응형

   

은닉화, 캡슐화 - 클래스 분리

   

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

   

   

출력결과

   

반응형