PhoneNumber – String workPhone, homePhone, cellPhone
Person – String name, PhoneNumber phone, String email
PersonContactTest (Person has-a PhoneNumber)
Just another Kyoung Shin Park’s Lectures Sites site
PhoneNumber – String workPhone, homePhone, cellPhone
Person – String name, PhoneNumber phone, String email
PersonContactTest (Person has-a PhoneNumber)
http://www.programmerinterview.com/index.php/java-questions/method-overriding-vs-overloading/
Method Overloading: 동일한 함수명에 매개변수가 다른 함수를 둘 이상 정의하는 것으로, 동일한 함수 기능을 수행하지만 다른 매개변수의 경우를 처리할 때 사용
//compiler error – can’t overload based on the
//type returned (one method returns int, the other returns a float):
//int changeDate(int Year) ;
//float changeDate (int Year);
//compiler error – can’t overload by changing just
//the name of the parameter (from Year to Month):
//int changeDate(int Year);
//int changeDate(int Month) ;
//valid case of overloading,
//since the methods have different number of parameters:
int changeDate(int Year, int Month) ;
int changeDate(int Year);
//also a valid case of overloading,
//since the parameters are of different types:
int changeDate(float Year) ;
int changeDate(int Year);
Method Overriding: 상속받은 파생 클래스에서 동일한 함수명에 동일한 매개변수로 정의하여 함수를 재정의하는 것으로 상속되어진 함수의 기능을 변경해서 재사용하고 싶을 때 사용
public class Parent {
public int someMethod() {
return 3;
}
}
public class Child extends Parent{
// this is method overriding:
public int someMethod() {
return 4;
}
}
// private constructor는 정적 메소드와 필드 (static method & field)만 있는 경우 사용함.
class Counter {
private Counter() { }
public static int currentCount;
public static int IncrementCount() { return ++currentCount; }
}
class TestCounter {
public static void main(String[] args) {
// If you uncomment the following statement, it will generate
// an error because the constructor is inaccessible:
//Counter aCounter = new Counter(); // Error
Counter.currentCount = 100;
Counter.IncrementCount();
System.out.println("count=" + Counter.currentCount); // count=101
}
}
// protected constructor는 추상클래스 (abstract class)에서 사용을 권고함. 추상 클래스를 상속받는 파생클래스에서 파생 클래스 생성자가 부모 클래스 즉, 추상 클래스를 초기화 하기 위해 추상 클래스 생성자를 호출 할 수 있도록 지원함.
public abstract class Shape {
protected Shape(String name) {
this.name = name;
}
private String name;
public void print() { System.out.print(this.name); }
}
public class Rectangle extends Shape {
private double width, height;
public Rectangle(String name) {
super(name);
this.width = 2;
this.height = 3;
}
@Override
public void print() {
super.print();
System.out.printf(" 가로: %f 세로: %f\n", this.width, this.height);
}
}
public class Triangle extends Shape {
private double bottom, height;
public Triangle(String name) {
super(name);
this.bottom = 1;
this.height = 1;
}
@Override
public void print() {
super.print();
System.out.printf(" 밑변: %f 높이: %f\n", this.bottom, this.height);
}
}
class ShapeTest {
public static void main(String[] args) {
//Shape s1 = new Shape("도형"); // Error; Shape is abstract; cannot be instantiated
Shape s = new Triangle("삼각형");
s.print(); // 삼각형 밑변: 1 높이: 1
s = new Rectangle("직사각형");
s.print(); // 직사각형 가로: 2 세로: 3
}
}
Lab3 프로젝트 디렉토리 안에 모든 파일(src/*.java & bin/*.class)와 보고서 (2~3장)를 넣고 JAVA21_Lab3_분반_학번_이름.zip 압축한 후 제출
Lab3 class/OOP
보고서는 출력해서 수업시작 전에 제출한다.
WindChillTemperatureIndex 열거형
EXTREME_DANGER
DANGER
WARNING
CAUTION
AWARE
public static WindChillTemperatureIndex getIndex(double value)
EXTREME_DANGER -75 F 미만 (-60 C)
DANGER -75 ~ -50 F (-60 ~ -45 C)
WARNING -50 ~ -15 F (-45 ~ -25 C)
CAUTION -15 ~ 15 F (-25 ~ -10 C)
AWARE 15 ~ 32 F (-10 ~ 0 C)
그 외, null
HeatIndex 열거형
EXTREME_DANGER
DANGER
EXTREME_CAUTION
CAUTION
public static HeatIndex getIndex(double value)
EXTREME_DANGER 130 F 이상 (54 C 이상)
DANGER 105 ~ 130 F (41 ~ 54 C 미만)
EXTREME_CAUTION 90 ~ 105 F (32 ~ 41 C 미만)
CAUTION 80 ~ 90 F (27 ~ 32 미만)
그 외, null