📌오버라이딩 조건
package inhertest; class Cake { public void yummy() { System.out.println("Yummy Cake"); } } class CheeseCake extends Cake { public void yummy() { System.out.println("Yummy Cheese Cake"); } } public class PolyTest2 { public static void main(String[] args) { Cake c1 = new CheeseCake(); CheeseCake c2 = new CheeseCake(); c1.yummy(); c2.yummy(); } }
출력결과
Cake (부모) 클래스의 yummy 메소드를 CheeseCake (자식) 클래스의 yummy 메소드가 덮어씀
📌오버로딩의 조건: 메소드의 이름이 같고, 매개변수의 개수나 타입이 달라야 한다.
📌오버라이딩 조건: 자식 클래스에서 오버라이딩하고자 하는 메소드의 이름, 매개변수, 리턴 값이 부모 클래스의 메소드와 모두 같아야 한다.
Fruit fAry[] = { new Grape(), new Apple(), new Pear() }; for (Fruit f : fAry) { f.print(); } -------------------------------------- <<출력결과>> 나는 포도이다. 나는 사과이다. 나는 배이다.
class Fruit {
public void print() {
System.out.println("나는 ~이다. ");
}
}
class Grape extends Fruit {
public void print() {
System.out.println("나는 포도이다.");
}
}
class Apple extends Fruit {
public void print() {
System.out.println("나는 사과이다.");
}
}
class Pear extends Fruit {
public void print() {
System.out.println("나는 배이다.");
}
}
public class PolyTest2 {
public static void main(String[] args) {
Fruit fAry[] = { new Grape(), new Apple(), new Pear() };
for (Fruit f : fAry) {
f.print();
}
}
}
Shape[] shapeArr = { new Circle2(10), new Rectangle(10,20),new Triangle(10,20) }; double sum = 0; for (Shape shape : shapeArr) { sum += shape.getArea(); } System.out.println("총 면적은:" + sum); shapeAllArea(shapeArr); //총 면적은:614.1592653589794
package inhertest;
class Shape2 {
public double getArea() {
return 0;
}
}
class Circle7 extends Shape2 {
double r;
public Circle7(double r) {
this.r = r;
}
public double getArea() {
return r * r * Math.PI;
}
}
class Rectangle7 extends Shape2 {
double w, h;
public Rectangle7(double w, double h) {
this.w = w;
this.h = h;
}
public double getArea() {
return w * h;
}
}
class Triangle7 extends Shape2 {
double b, h;
public Triangle7(double b, double h) {
this.b = b;
this.h = h;
}
public double getArea() {
return (b * h) / 2.0;
}
}
public class OverTest {
public static void shapeAllArea2(Shape2[] sa) {
double sum = 0;
for (Shape2 shape : sa) {
sum += shape.getArea();
}
System.out.println("총 면적은: " + sum);
}
public static void main(String[] args) {
Shape2[] shapeArr = { new Circle7(10), new Rectangle7(10, 20), new Triangle7(10, 20) };
double sum = 0;
for (Shape2 shape : shapeArr) {
sum += shape.getArea();
}
System.out.println("총 면적은: " + sum);
shapeAllArea2(shapeArr); // 총 면적은:614.1592653589794
}
}
- 4 x 4의 2차원 배열을 만들고, 이곳에 1에서 10까지 범위의 정수를 랜덤하게 생성하여 정수 16개를 배열에 저장하고, 2차원 배열을 화면에 출력하라.
public class OverTest {
public static void main(String[] args) {
int[][] arr = new int[4][4];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
arr[i][j] = (int) (Math.random() * 10) + 1;
}
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}