정보 은닉을 활용한 캡슐화 꼭 필요한 정보와 기능만 외부에 오픈함 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만은 제공(public 메소드)하여 일관된 기능을 구현 하게 함 각각의 메서드나 멤버 변수를 접근함으로써 발생하는 오류를 최소화 한다. 1. private 메서드들의 순서를 지키고, 그 메소드의 각각 내용을 클라이언트가 알 필요가 없으므로 private로 (hide=캡슐화) 접근 제어를 한 뒤, 2. public 메소드 하나를 제공해 놓고 메소드들의 순서를 정확하게 한 뒤 결과를 리턴함! (캡슐화의 한 가지 방식) --> 메서드나 필드를 외부에 공개할 것인가, 말것인가? --> 객체 지향에서 매우 중요! --> 어떻게 공개해서, 효율적으로, 오류 없이 객체를 사용할 것인가? Ma..
접근 제어 지시자(access modifier)와 정보은닉(infomation hiding) 1. 접근 제어 지시자 (accesss modifier) 클래스 외부에서, 클래스의 멤버 변수, 메서드, 생성자 사용 여부를 지정하는 키워드 private : 같은 클래스 내부에서만 접근 가능 ( 외부 클래스, 상속 관계의 클래스에서도 접근 불가 ) default(아무것도 없음) : 같은 패키지 내부에서만 접근 가능 ( 상속 관계라도 패키지가 다르면 접근 불가 ) -> 다른 패키지에서 쓰려면 import 해야함 protected : 같은 패키지나 상속관계의 클래스에서 접근 가능하고 그 외 외부에서는 접근 할 수 없음 public : 클래스의 외부 어디서나 접근 할 수 있음(모두 가능) 2. get()/ set()..
참조 자료형 변수의 자료형 클래스를 타입으로 변수 선언 기본 자료형은 사용하는 메모리의 크기가 정해져 있지만, 참조 자료형은 클래스에 따라 할당되는 메모리가 다르다 String 클래스는 예외적으로 생성하지 않고 사용할 수 있다. 참조 자료형 정의하여 사용하기 학생이 수강한 과목들에 대한 성적을 산출하려고 하는데, 학생 클래스 속성에 모든 과목이 있으면, 모든 과목을 듣지 않은 학생들은 어떻게 할 것인가? 학생(Student)과 과목(Subject)에 대한 클래스를 따로 분리하고 -> Subject 클래스를 활용하여 수강한 과목들을 변수의 타입으로 선언 선언된 Subject 변수는 생성된 인스턴스가 아니므로, Student의 생성자 안에서 생성하여 사용 그러니까... 학생 클래스에, 참조 자료형으로 모든 ..
여러가지 생성자를 정의하는 생성자 오버로딩(overloading) 생성자 정의 하기 생성자를 구현해서 사용할 수 있음 클래스에 생성자를 따로 구현하면 기본 생성자 (default constructor)는 제공되지 않음 생성자를 호출하는 코드(client 코드)에서 여러 생성자 중 필요에 따라 호출해서 사용할 수 있음 디폴트 생성자와 생성자로 멤버 변수 초기화하기! UserInfo.java public class UserInfo { public String userId; public String userPassWord; public String userName; public String userAddress; public String phoneNumber; public UserInfo(){} //디폴트 생..
Student studentLee = new Student(); Student라는 클래스의 studentLee라는 변수를 만들고 new Student(); 하는데, 이것이 생성자! 생성자 생성자 기본 문법 ([
인스턴스 (instance) 클래스는 객체의 속성을 정의(멤버 변수)하고, 기능을 구현하여 만들어 놓은 코드 상태 실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값(속성)을 가지게 됨 new 키워드를 사용하여 인스턴스 여러개 생성 가능 힙 메모리 생성된 인스턴스는 동적 메모리(heap memory) 에 할당됨 C나 C++ 언어에서는 사용한 동적 메모리를 프로그래머가 해제 시켜야 함 ( free() 나 delete 이용) 자바에서 Gabage Collector 가 주기적으로 사용하지 않는 메모리를 수거 하나의 클래스로 부터 여러개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 됨(JVM이 준 가상 메모리 값) 참조 변수, 참조 값 Student studentLee = new S..
학생 클래스 정의 학생 클래스의 속성을 멤버 변수로 선언하고 메서드를 구현한다 package ch04; public class Student { public int studentID; public String studentName; public String address; public void showStudentInfo() { System.out.println(studentID+"번의 학생이 이름은 "+studentName+"이고, 주소는 "+address+"입니다."); } public String getStudentName() { return studentName; } public void setStudentName(String name) { studentName=name; } } 학생 클래스를 생..
함수란 (function) 하나의 기능을 수행하는 코드 함수는 호출하여 사용하고, 호출된 함수는 기능이 끝나면 제어가 반환됨 함수로 구현된 기능은 여러 곳에서 동일한 방식으로 호출되어 사용될 수 있음 함수 정의하기 함수는 이름, 매개 변수, 반환 값, 함수 몸체(body)로 구성됨 int add(int num1, int num2) { int result; result = num1 + num2; return result; } 함수 구현하기 예제 package ch02; public class FuntionTest { public static int addNum(int num1,int num2) { //반환할 값의 자료형은 int고, 함수명은 addNum int result; result=num1+num2;..