본문 바로가기

전체 글

(72)
[JAVA] 생성자 생성자 클래스를 선언할 때는 다음과 같이 레퍼런스 type, 참조변수, new 연산자, 생성자가 사용된다. Test myTest = new Test(); 이러한 형태가 기본적으로 배우는 클래스 선언의 형태인데, 여기서 Test()는 기본 생성자라고 한다. 기본 생성자는 매개변수가 없는 생성자이며 사용자가 별도로 생성자를 만들지 않았다면 자동으로 생성된다. public class Test{ public Test(){ System.out.println("기본 생성자"); } public Test(int a){ System.out.println("매개변수가 있는 생성자, 매개변수 " + a); } } 생성자를 선언할 때는 생성자의 이름과 클래스의 이름이 같아야 한다. super() 부모로부터 상속받은 자식 클..
[JAVA] getter(), setter() private 객체지향 프로그램은 정보은닉이 중요하다. Field를 잘 숨기기 위해서는 객체의 데이터에 외부에서 직접적으로 접근하는 것을 막아야한다. 예를 들어, 최고 기록에 대한 객체일 경우, 현재까지의 최대값을 넘기지 않으면 값이 변해서는 안된다. 그러니까 외부에서 주어진 값의 유효여부 등을 확인할 수 있도록 해주는 것이다. public int i; 이와 같은 선언 방식은 객체를 보호해줄 수 없다. 다른 클래스에서 해당 필드에 접근해 값을 직접적으로 변경하여도 그대로 값이 변해버리기 때문이다. 이를 위해 사용하는 것이 private 접근제한자 이다. private int i; 이와 같이 선언할 경우 다른 클래스에서는 직접적인 접근이 불가해진다. 즉, 정보를 안전하게 보호할 수 있는 것이다. 그렇다면 ..
[JAVA] 다형성 - 메소드 오버라이딩(Method Overridng) 메소드 오버라이딩 메소드 오버라이딩이란 상위 클래스의 메소드를 하위클래스가 재정의 하는 것을 의미한다. 상위 클래스의 메소드를 그대로 가져다 쓰거나 상황에 따라 약간의 변형을 통해 사용하기 때문에, 오버라이딩한 메소드의 이름, 파라미터 갯수, 타입 등이 동일하여야 한다. class Parent{ void say(){ System.out.println("부모 클래스."); } } class Child{ void say(){ System.out.println("자식 클래스."); } } 오버라이딩한 메소드는 상속의 개념이기 때문에 부모 클래스의 해당 메소드의 동작이 포함되어 있어야한다. 상속은 분명 부모타입으로 자식타입을 참조할 수 있고 그 반대 역시 가능하다고 하였다. 그렇다면 이 경우에 오버라이딩된 메소..