error_access private

부모클래스(Rect)의 필드(width & height)의 접근제한자는 private이다. 그러므로 자식클래스(Triangle) 내에서 해당 필드값을 그대로 가져다 사용하면 '필드(width, height)' has private access in Rect' 라는 에러가 발생한다. 그러므로 아래 사진의 Line 18과 같이 해당 필드로 구성된 메소드. 그 메소드(getArea)를 가져다 자식클래스 내의 구현하려는 새로운 기능(예시: /2)을 더해서 오버라이딩 해야한다.  

 

error_access private(2)

Line 17. 메소드 무한반복 -> 하지만 getArea가 부모클래스 Rect의 getArea가 아닌 자식클래스 Triangle 자신의 메소드 getArea를 가리키기 때문에 return 결과값을 다시 본인의 getArea메소드로 불러오는 반복형태.

 

error_access private(3)

자식클래스(Triangle)의 메소드 안에서 super.메소드명() + 추가할연산 또는 기능을 통해 오버라이딩 구현한다.

ex) public Employee(String name, String department, String position, int number, double salary)
Employee emp = new Employee(); <- 오류!
Employee emp = new Employee("송다슬", "Backend", 2020110, "Staff",2000000.0, 300000.0); 


이처럼 매개변수의 length와 데이터타입에 맞는 value값이 순서에 맞게 들어가야 한다.

this.name = name; (O)

 

this.name = name(); (X)

public Employee(String name, String department, String position, int number, double salary){생략} 
=> 매개변수 5개
class Employee2 extends Employee{

public Employee2(String name, String department, String position, double salary, long residentNumber, int hour, do

                        ㄴ 이처럼 상속받는 매개변수는 자식클래스에서 마찬가지로 순서에 맞춰 기재되어야 한다(생략불가)

uble hourlyWage){
super(name, department, position, salary);
=> 매개변수 4개
에러 발생!

-> 부모클래스 생성자 String, String, String, int, double 위의 다섯 개가 super() 안에 들어가야한다. 즉, 부모클래스의 매개변수를 자식클래스에서 취사선택(위에 예에서는 int number 제외) 할 수 없다는 뜻.

+ Recent posts