IT 면접 족보29

권단비·2023년 2월 7일
0

IT

목록 보기
61/139

1. 메소드 오버라이딩(Overriding) 이란?

▼정답

메소드 오버라이딩 : 상속 관계에 있는 부모 클래스에서
                  이미 정의된 메소드를 자식 클래스에서 다시 정의하는 것(덮어쓴다)
함수 오버라이딩 조건 : 함수오버라이딩은 자식꺼

하기 조건을 충족 시 함수 오버라이딩이 된다.
1.상속 관계에서(부모자식관계)
2.데이터타입, 함수명, 파라미터까지 동일
3.{}바디 안의 내용만 다르게 한다.

=자식의 함수가 부모의 함수를 덮어쓴다.

2. 오버로딩 vs 오버라이딩 에 대하여 설명하시오.

▼정답

오버로딩 : 동일 클래스 내 메소드의 이름이 같지만,
          매개변수의 개수나 타입 다르면 정의할 수 있다.
오버라이딩 : 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의

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();
		}
	}
}

4.아래를 main 함수에 넣고 돌아 가도록 하시오.

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.아래의 프로그램을 짜시오. (필수)

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(" ");
		}
	}
}

0개의 댓글