본문 바로가기

JAVA27

18. 캡슐화 캡슐화는 크게 아래 두 가지 이유로 필수적이다. 외부로부터 데이터에 직접접근할 수 없도록 보호한다. 외부에는 불필요하고 내부적으로만 사용되는 부분을 감추기 위해서이다. 아래 코드를 통해서 살펴보자. public class Time { // private을 사용하여 외부로부터 멤버변수에 직접 접근을 제한한다. private int hour; private int minute; private int second; // 메서드를 활용하여 제어문을 통해서 멤버변수에 접근하도록 허용한다. public void setHour(int hour) { if(isNotVaildHour(hour)) return; this.hour = hour; } // private을 통하여 내부에서만 사용하는 부분을 감춘다. privat.. 2022. 10. 3.
17. 제어자 제어자는 클래스와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미를 부여해준다. 접근 제어자 : public, protected, (default), private 그 외 : static, final, abstract, native, transient, ... 접근 제어자를 가장 왼쪽에 입력한다. 하나의 대상에 여러 제어자를 같이 사용 가능하다. static 제어자 static 멤버 변수 - 모든 인스턴스에 공통적으로 사용(공유)되는 클래스변수 - 클래스 변수는 인스턴스를 생성하지 않고, 클래스가 메모리에 올라가면 사용 생성. 메서드 - 인스턴스를 생성하지 않고, 호출이 가능한 static 메서드가 됨. - static 메서드 내에서는 인스턴스 멤버들을 사용 불가함. class StaticTest {.. 2022. 10. 3.
16. super()와 super super()와 super 조상의 생성자 super()와 참조변수 super는 this()/this 와 같이 완전히 다른 것이다. 조상의 생성자 super() 조상의 생성자를 호출할 때 사용한다. 조상의 멤버는 조상의 생성자를 호출해서 초기화한다. 생성자의 첫 줄에 반드시 생성자를 호출해야 한다. (호출하지 않으면 컴파일러가 자동으로 첫 줄에 super(); 삽입) 아래 코드를 통해 위 3가지 조건을 정리해보자. MyPoint3D라는 클래스는 Point2에서 멤버 x, y를 상속받음. MyPoint3D클래스에는 겹치는 멤버가 없기 때문에 this를 이용해서 접근하면 부모의 x, y에 접근하게 됨. MyPoint3D클래스의 생성자에서 this를 통해 초기화를 해주는데, 만약 첫번째 빨간 박스가 없다면, P.. 2022. 10. 2.
15. 오버라이딩 오버라이딩 - 상속받은 조상의 메서드를 자신에 맞게 변경하는 것이다. 바로 아래 예시를 살펴보면, class Point3D extends Object{ int x; int y; Point3D(int x, int y){ this.x = x; this.y = y; } // 기본으로 상속되는 Object class(모든 class의 최고 조상 class)의 toString() 메서드를 오버라이딩 public String toString() { return "x: "+ x + ", y: " + y; } } public class OverridinEx { public static void main(String[] args) { // TODO Auto-generated method stub Point3D p3 = .. 2022. 10. 2.