메소드 오버라이딩 상위클래스에 이미 정의된 메소드의 구현 내용이 하위클래스에서 구현할 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메소드를 재정의 할수 있다. 예제의 Customer 클래스의 calcPrice() 와 VIPCustomer 의 calcPrice() 구현 내용은 할인율과 보너스 포인트 적립 내용 부분의 구현이 다르다 따라서 VIPCustomer클래스는 calcPrice() 메소드를 재정의 해야 한다 . package inheritance; import org.omg.Messaging.SyncScopeHelper; public class Customer { private int customerID; private String customerName; protected String cu..
분류 전체보기
상위 클래스로의 묵시적 형 변환 ( 업 캐스팅 ) 상위 클래스 형으로 변수를 선언하고 하위 클래스 인스턴스를 생성 할 수 있다. 하위 클래스는 상위 클래스의 타입을 내포하고 있으므로 상위 클래스로 묵시적 형변환이 가능하다 상속 관계에는 모든 하위 클래스는 상위 클래스로 묵시적 형변환이 일어난다. 그 역은 성립되지 않는다. package inheritance; public class CustomerTest { public static void main(String[] args) { Customer customerLee = new Customer(10010, "이순신"); // 상위 클래스 customerLee.setCustomerName("이순신"); customerLee.setCustomerID(1001..
상속에서 클래스 생성 과정과 형 변환 하위클래스가 생성되는 과정 하위클래스가 생성될 때 상위 클래스가 먼저 생성된다. 상위클래스의 생성자가 호출되고 하위 클래스의 생성자가 호출된다. 하위 클래스의 생성자에서는 무조건 상위 클래스의 생성자가 호출되어야 한다. 하위 클래스에서 상위 클래스의 생성자를 호출하는 코드가 없는 경우 컴파일러는 상위 클래스 기본 생성자를 호출하기 위한 super() 를 추가한다. Super() 로 호출되는 생성자는 상위클래스의 기본생성자 이다. 만약 상위클래스의 기본생성자가 없는 경우 ( 매개변수가 있는 생성자만 존재 하는 경우 ) 하위 클래스는 명시적으로 상위클래스의 생성자를 호출해야 한다. Customer 클래스 package inheritance; import org.omg.M..
상속 , 다형성 이란 ? 유지보수 쉽고 확진성 있는 시스템을 개발할수있다 객체지향 의 가장큰 장점 이다. 추상클래스 ,인터페이스까지 이어지는 내용이다. 클래스에서 상속의 의미 새로운 클래스를 정의 할 때 이미 구현된 클래스를 상속 받아서 속성이나 기능이 확장되는 클래스를 구현한다. 새로 코딩을 하는게 아니라 기능을 상속받아서 쓴다. 코드가 재사용의 방법이라고 이해하면 안된다. 상속은 좀더 일반적인 클래스가 있고 그것보다 기능이 구체적인 클래스를 설계할 때 유사한 클래스를 만드는데 기존의 클래스를 기능을 가져다가 확장한 클래스를 만든다 라고 생각한다. (이질적인 클래스가 아니다.) 코드로 나타낼 때 class B extends A { } 를 쓴다. extends 뒤에 클래스 이름 하나만 올수있다. 상속을 ..
Book 클래스 package arrayTest2; public class Book { private String name; private String author; public Book(String name ,String author) { this.name = name; this.author = author; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } } Student 클래스 add..
package arrayTest; public class Subject { private String name; private int score; public Subject(String name , int score) { this.name = name; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } } ArrayList 를 활용한 package arrayTest; impor..