JAVA-8

유명준·2024년 2월 1일

JAVA

목록 보기
7/15
post-thumbnail

1. Getter와 Setter는 왜 써야할까

1-1. 캡슐화

  • 유사한 기능이나 변수를 한 집합으로 하여 더
    관리하기 쉽게하고 코드를 명확히 함
  • 외부에서 멤버를 엑세스하는 방법을 지정할
    수 있도록, 직접 접근을 막거나 접근전 부가적인
    처리를 요구함
  • 정보를 외부에 은닉하여 외부에서는 해당 집합의
    세부 내용에 집중하지 않도록 함

1-2. Setter

private int age;

public void setAge(int age){
	if(age >= 0){
		this.age = age;
	} else {
		this.age = 0;
	}
}

1-3. Getter

private int age ;
private String name;

public in getAge(){
	rSyntax error on token "abstract", class expected after this tokeneturn this.age;
}	
public in getName(){
	return this.name
}

2.오버라이드(Override)

  • 부모 클래스가 갖고 있는 기능을 자식 클래스가 재정의
  • 부모 클래스에 정의된 것과 동일한 이름을 갖는 메서드를 자식 클래스가 정의한 경우,
    부모 클래스의 기능은 자식에게 가려진다.
  • 부모의 기능을 재정의 하는것을 메서드 override 라고 한다.
  • 모든 자식 클래스가 동일한 이름의 메서드를 갖게 되므로 각 객체에 대하여
    attack()이라는 이름을 사용하여 서로 다른 형태를 구현할 수 있게 된다.

2-1. super 키워드

  • 클래스의 상속관계에서 자식 클래스가 부모 클래스를 가리키는 예약어

  • 사용하는 방법
    ->전역변수 이름 앞에 명시
    :부모 클래스의 전역변수를 의미한다. 하지만, 부모클래스의 전역변수는 이미 모두 상속되어 있기 때문에
    이 경우에는 this 키워드를 사용하는 것과 동일한 결과이기 떄문에 잘 사용하지 않는다.

    	-> 메서드 이름 앞에 명시 
    	   : 부모 클래스의 메서드를 의미 한다.
    	   : 재정의 되지 않는 메서드 
    		-> 이미 상속되어 있기 때문에 this키워드를 사용하는 것과 동일한 결과를 갖는다.
    	  : 재 정의된 메서드  -> Override된 메서드 이름 
    		-> 앞에 사용하게 되면 재정의 이전의 원본 메서드를 의미하게 된다.
    	-> 키워드 자체를 메서드 처럼 사용
    	   : super();
    	   : 부모 클래스의 생성자를 의미한다.

2-2. 상속관계 에서 생성자 처리

  • 생성자는 상속되지 않는다.
  • 하지만 생성자가 정의된 클래스는 객체 생성을 위해서 생성자 파라미터를 반드시 전달받아야 하기 때문에,
    파라미터를 갖는 생성자가 정의된 클래스를 상속 받게 되면 에러가 발생한다
  • 부모 생성자의 강제 호출
    -> 생성자가 정의된 클래스를 상속받은 경우에는 자식 클래스의 생성자를 통해서 부모 생성자를
    강제로 호출해야 한다.
    -> 부모의 생성자를 호출하는 방법은 super키워드를 메서드 이름으로 사용하는 것이다.

2-3. @Override 옵션

  • 어노테이션Override
  • 메서드 재정의 과정에서 오타가 발생한 경우
  • 부모 클래스의 say() 메서드를 재정의 하는 과정에서 개발자의 실수로 인해 sai()라고 메서드를 추가되었다면
    java는 새로운 메서드를 추가한 것으로 인식하고 특별한 에러를 표시하지 않는다.
  • say() 메서드가 재정의 된것으로 생각한 개발자는 이 경우 의도하지 않은 결과를 만나게 될것이다.
  • 메서드 재정의 과정에서의 오타 방지 옵션
  • "@Override"는 이 키워드가 명시된 위치 아래에 정의되는
    메서드가 부모 클래스에 존재하지 않을 경우 구문 에러로 처리한다
  • 부모 클래스의 메서드를 재정의 하고자 할경우, 의도치 않은 실수를 예방하기 위한 "오타 방지 옵션"
  • 여러 개의 메서드를 재정의 한다면 재정의 되는 모든 메서드들을 위에 각기 명시해야 한다.

0개의 댓글