///////
Search
☘️

생성자, 접근제한자 - 진혁, 아진

생성자

인스턴스변수(객체) 초기화
1. 생성자의 이름은 클래스 이름과 같아야 함
2. 리터 값이 없다(void 생략)
class Pizza { int size; String type; public Pizza() { size = 12; type = "슈퍼슈프림"; } public Pizza(int s, String t) { size = s; type = t; } } public class PizzaTest { public static void main(String[] args) { Pizza obj1 = new Pizza(); System.out.println("("+obj1.type+ " , "+obj1.size+",)"); Pizza obj2 = new Pizza(24, "포테이토"); System.out.println("("+obj2.type+ " , "+obj2.size+",)"); } }
Plain Text
복사
obj1 과 obj2의 객체 주소 다름

기본 생성자(default constructor)

class A{ } public class JinWorld{ public static void main(String[] args){ A a = new A(); System.out.println(a);
JavaScript
복사
class A{ } 기본(디폴트) 생성자를 만들어 준다
생성자가 하나라도 있으면 디폴트 생성자를 컴파일러가 만들지 않음!!

this()와 this

this : 클래스 내부에서 자기 자신을 가르킬 때
this(), this(매개변수) : 같은 클래스의 다른 생성자를 호출할 때

접근제한자

접근제한자는 클래스, 필드변수, 생성자, 메서드 앞에 사용함

접근제한의 범위

클래스 앞에 붙는 접근제한자 : public or default(보통은 생략해서 사용)
변수와 메서드 앞에 붙는 접근제한자 : All

접근제한의 범위

정보은닉의 필요성

해당 변수의 접근하는 함수(메서드)를 별도로 정의해서 안전하게 변수에 접근할 수 있도록 함
public class HCar { private String name; public int year; int price; public String getName() { return name; } public void setName(String name) { this.name = name; } }
Java
복사
year은 문제가 없지만, price와 name은 컴파일 에러 발생
setter 메서드를 통해 hCar 변수 name값을 변경