▼정답
메소드 오버라이딩 : 상속 관계에 있는 부모 클래스에서
이미 정의된 메소드를 자식 클래스에서 다시 정의하는 것(덮어쓴다)
함수 오버라이딩 조건 : 함수오버라이딩은 자식꺼
하기 조건을 충족 시 함수 오버라이딩이 된다.
1.상속 관계에서(부모자식관계)
2.데이터타입, 함수명, 파라미터까지 동일
3.{}바디 안의 내용만 다르게 한다.
=자식의 함수가 부모의 함수를 덮어쓴다.
▼정답
오버로딩 : 동일 클래스 내 메소드의 이름이 같지만,
매개변수의 개수나 타입 다르면 정의할 수 있다.
오버라이딩 : 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의
// Fruit fAry[] = {new Grape(), new Apple(), new Pear());
// for(Fruit f : fAry) {
// f.print();
// }
// - 결과
// 나는 포도이다.
// 나는 사과이다.
// 나는 배이다.
▼정답
class Fruit {
public void print() {
}
}
class Grape extends Fruit {
@Override
public void print() {
System.out.println("나는 포도이다.");
}
}
class Apple extends Fruit {
@Override
public void print() {
System.out.println("나는 사과이다.");
}
}
class Pear extends Fruit {
@Override
public void print() {
System.out.println("나는 배이다.");
}
}
public class Test45 {
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
▼정답
class Shape {
public double getArea() {
return 0;
}
}
class Circle1 extends Shape {
private double radius;
public Circle1(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return this.radius * this.radius * Math.PI;
}
}
class Rectangle1 extends Shape {
private double width, height;
public Rectangle1(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return this.width * this.height;
}
}
class Triangle1 extends Shape {
private double width, height;
public Triangle1(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return (this.width * this.height) / 2;
}
}
public class MathodOverRiding3 {
public static void main(String[] args) {
/////변수 선언//////////////////////////////////////////////////
Shape[] shapeArr = { new Circle1(10), new Rectangle1(10, 20), new Triangle1(10, 20) };
////로직///////////////////////////////////////////////////////
double sum = 0;
for (Shape shape : shapeArr) {
sum += shape.getArea(); // 함수 오버라이딩 | 부모것을 덮어쓰니까
}
System.out.println("총 면적은: " + sum); // 총 면적은: 614.1592653589794
shapeAllArea(shapeArr); // 총 면적은: 614.1592653589794
}
//////////////////////////////////////////////////////////////
public static void shapeAllArea(Shape[] shapeArr) {
double sum = 0;
for (Shape shape : shapeArr) {
sum += shape.getArea();
}
System.out.println("총 면적은: " + sum);
}
}
4 x 4의 2차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를
랜덤하게 생성하여 정수 16개를 배열에 저장하고, 2차원 배열을 화면에 출력하라.
8 6 1 1
7 3 6 9
4 5 3 7
9 6 3 1
▼정답
//4 x 4의 2차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를
//랜덤하게 생성하여 정수 16개를 배열에 저장하고, 2차원 배열을 화면에 출력하라.
//
//8 6 1 1
//7 3 6 9
//4 5 3 7
//9 6 3 1
public class Test46 {
public static void main(String[] args) {
int[][] arr = new int[4][4];
for (int i = 0; i < arr.length; i++) { // 4행
for (int j = 0; j < arr[i].length; j++) { // 4열
arr[i][j] = (int) (Math.random() * 10) + 1;
System.out.print(arr[i][j] + " ");
}
System.out.println(" ");
}
}
}