변수의 유효 범위와 메모리
개발/Java
/ 2021. 4. 22.
· 변수의 유효 범위(scope)와 생성과 소멸(life cycle)은 각 변수의 종류마다 다름. · 지역 변수, 멤버 변수, 클래스 변수 => 다른 유효범위, life cycle, 사용하는 메모리가 다름. static 변수는 프로그램이 메모리에 있는 동안 계속 그 영역을 차지하므로 너무 큰 메모리를 할당하는 것은 좋지 않음 클래스 내부의 여러 메서드에서 사용하는 변수는 멤버 변수로 선언하는 것이 좋음 멤버 변수가 너무 많으면 인스턴스 생성 시 쓸데없는 메모리가 할당됨 상황에 적절하게 변수를 사용해야 함
Static 변수
개발/Java
/ 2021. 4. 22.
Static 변수 여러 인스턴스에서 공통으로 사용하는 변수 선언 · 여러 인스턴스가 공유하는 기준 값 · 고유 번호 (학번, 카드 번호, 사번, 자동차 시리얼 번호 등) static 변수 선언과 사용 ex_ static int serialNum; · 인스턴스가 생성될 때 만들어지는 변수가 아닌, 처음 프로그램이 메모리에 로딩될 때 메모리를 할당 · 클래스 변수, 정적 변수라고도 함 · 인스턴스 생성과 상관 없이 사용 가능하므로 클래스 이름으로 참조 Employee 생성( static 변수 적용 예제) public class Employee { public static int serialNum = 1000; private int employeeId; private String employeeName; pr..
객체 간의 협력 (collaboration)
개발/Java
/ 2021. 4. 22.
객체 지향 프로그래밍에서의 협력 · 객체 지향 프로그램에서 객체 간에는 협력이 이루어짐. · 협력을 위해서는 필요한 메세지를 전송하고 이를 처리하는 기능이 구현되어야 함 · 매개 변수로 객체가 전달되는 경우가 발생 위 사진의 예제 소스 학생 객체가 버스나 지하철을 이용할 수 있다. 각 교통수단을 이용 시 학생이 갖고 있는 돈에서 탑승비용이 차감된다. 각 교통수단은 탑승한 인원 수와 인원만큼의 수입이 나타난다. Student의 클래스 public class Student { String studentName; int money; public Student(String studentName, int money) { this.studentName = studentName; this.money = money; ..
<접근 제어 지시자>와 <정보은닉>
개발/Java
/ 2021. 4. 20.
접근 제어 지시자 (access modifier) · 클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정하는 키워드 private : 같은 클래스 내부에서만 접근 가능 (외부 클래스, 상속 관계의 클래스에서도 접근 불가) default (아무 것도 없음) : 같은 패키지 내부에서만 접근 가능 (상속 관계라도 패키지가 다르면 접근 불가) protected : 같은 패키지나 상속관계의 클래스에서 접근 가능하고 그 외 외부에서는 접근 할 수 없음 public : 클래스의 외부 어디서나 접근 할 수 있음\ get( ) / set( ) 메서드 · private으로 선언된 멤버 변수 (필드)에 대해 접근, 수정할 수 있는 메서드를 public으로 제공 · get( ) 메서드만 제공..
참조 자료형 변수
개발/Java
/ 2021. 4. 20.
변수 자료형 참조 자료형 클래스형으로 변수를 선언 기본 자료형은 사용하는 메모리의 크기가 정해져 있지만, 참조 자료형은 클래스에 따라 다름 참조 자료형을 사용할 때는 해당 변수에 대해 생성해야 함 (String 클래스는 예외적으로 생성하지 않고 사용할 수 있음) ex. Student클래스에 Subject 변수인 과목을 같이 선언 하는 예 public class Student { public int studentId; public String studentName; Subject korean; Subject math; public Student(int studentId, String studentName) { this.studentId = studentId; this.studentName = student..
생성자 오버로딩 (overloading)
개발/Java
/ 2021. 4. 19.
생성자 오버로딩 (Constructor overloading) 한 클래스 안에 여러가지 생성자를 정의하는 생성자 오버로딩 앞에서 다룬 주제에서 한 가지 짚고 넘어가겠습니다. public Student(int studentNumber, String studentName, int grade) { this.studentNumber = studentNumber; this.studentName = studentName; this.grade = grade; } 위 코드는 매개 변수를 받고, 이 받은 값을 각 멤버 변수에 넣어주는 생성자 입니다. 여기서 this는 생성자의 클래스가 갖고 있는 멤버 변수를 나타내고 매개 변수는 해당 생성자 선언 지역에서만 사용되는 지역 변수 입니다. 사실 저기에 매개 변수는 이름을 자..