class Calculator {
int left, right;
public int avg() {
return ((this.left + this.right) / 2); // 코드 중복
}
}
class SubstractionableCalculator extends Calculator {
public int avg() {
// return ((this.left + this.right) / 2); // 중복 제거
return super.avg(); // 상위 클래스 메소드 호출
}
}
class Calculator{
int left, right;
int third = 0; // 추가
public void setOprands(int left, int right){ // 매개변수 2개
System.out.println("setOprands(int left, int right)");
this.left = left;
this.right = right;
}
public void setOprands(int left, int right, int third){ // 매개변수 3개
System.out.println("setOprands(int left, int right, int third)");
this.left = left;
this.right = right;
this.third = third;
}
public void sum(){
System.out.println(this.left+this.right+this.third);
}
public void avg(){
System.out.println((this.left+this.right+this.third)/3);
}
}
public class CalculatorDemo {
public static void main(String[] args) {
Calculator c1 = new Calculator();
c1.setOprands(10, 20); // 매개변수 2개면 2개의 메소드 호출
c1.sum();
c1.avg();
c1.setOprands(10, 20, 30); // 매개변수 3개면 3개의 메소드 호출
c1.sum();
c1.avg();
}
}
public class OverloadingDemo {
void A (){System.out.println("void A()");}
void A (int arg1){System.out.println("void A (int arg1)");}
void A (String arg1){System.out.println("void A (String arg1)");}
//int A (){System.out.println("void A()");} // 오류 발생
public static void main(String[] args) {
OverloadingDemo od = new OverloadingDemo();
od.A();
od.A(1);
od.A("coding everybody");
}
}
// ClasspathDemo.java
class Item{
}
class ClasspathDemo {
}
package org.opentutorials.javatutorials.packages.example2;
import org.opentutorials.javatutorials.packages.example1.A; // 특정패키지의 클래스 가져옴
import org.opentutorials.javatutorials.packages.example1.*; // 특정패키지의 클래스 전체 가져옴
public class C {
public static void main(String[] args) {
A a = new A();
}
}
javac src/org/opentutorials/javatutorials/packages/example3/*.java
=> example3/ 하위에 있는 모든 자바 파일을 컴파일
==> 특별한 옵션을 주지 않으면 소스코드와 클래스 파일이 동일한 디렉토리에 위치
javac src/org/opentutorials/javatutorials/packages/example3/*.java -d bin
=> -d bin은 컴파일된 결과를 bin 디렉토리 하위에 위치시킨다는 의미
==> 자바 컴파일러는 자동으로 클래스의 패키지에 해당하는 디렉토리를 생성
package org.opentutorials.javatutorials.packages.example3;
import org.opentutorials.javatutorials.packages.example1.*;
import org.opentutorials.javatutorials.packages.example2.*;
public class D {
public static void main(String[] args) {
org.opentutorials.javatutorials.packages.example2.B b = new org.opentutorials.javatutorials.packages.example2.B();
}
}