스터디사이트 : https://www.hackerrank.com



JAVA Basic : 추상 클래스



※ 조건


Book , Solution 클래스가 주어지고

MyBook 클래스를 직접 코딩해야 한다.


MyBook클래스는 Book클래스를 상속받아야 한다


MyBook의 생성자의 파라미터

1. String title

2. String author

3. int price


Book클래스의 추상메소드인 display()를 구현하여 아래의 3라인을 출력해야 함

line 1 → Title: $title

line 2 → Author: $author

line 3 → Price: $price


※ 주의 : 

한 파일에 세 클래스가 동시에 쓰이기 때문에, 접근지정자를 쓰지 않도록 한다. (public, protected, private , ...)



※ 주어진 코드

: 아래 표시된 영역 안에서만 코딩 할 것.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
abstract class Book
{
    String title;
    String author;
    Book(String t,String a){
        title=t;
        author=a;
    }
    abstract void display();
}
 
//Write MyBook Class
/* 이곳에 코딩하시오 */
 
public class Solution
{
   
   public static void main(String []args)
   {
      Scanner sc=new Scanner(System.in);
      String title=sc.nextLine();
      String author=sc.nextLine();
      int price=sc.nextInt();
      Book new_novel=new MyBook(title,author,price);
      new_novel.display();
      
   }
}
cs


입력

The Alchemist

Paulo Coelho

248


출력

Title: The Alchemist

Author: Paulo Coelho

Price: 248



디버깅

주어진 코드 line 24를 보면

MyBook의 생성자의 인자는 3개이고, Book 생성자의 인자는 2개이다.

그 말은, 저번에 클래스상속에서 코딩했던 것처럼, 부모클래스의 파라미터를 super를 이용해서 끌어오고, 부모클래스에 없는 인자만 this를 써서

MyBook의 로컬변수로 지정하면 될 것 같다.


추상클래스에 대한 나의 포스팅 (시간이 지나면 까먹는것이 인지상정 ㅋ) : 

http://blog.naver.com/imf4/220612153934



코딩연습 1

이클립스의 도움만 받아서는 안되겠지만.. 제대로 연습하려면 이클립스가 하라는대로 구현하고 이렇게 생겼구나 라고 구경하고 기억해야겠다 ㅎ


-


코딩연습 2

조건에서 이야기한 접근지정자를 쓰지 말라는 말.. 무시하고 한번 ' public ' 을 클래스와 메소드에 각각 붙여보았다.

메소드에 public을 붙이면 문제가 없었고,

클래스에 public을 붙이면 문제가 생긴다.

  

-



코딩연습 & 결과


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
abstract class Book
{
    String title;
    String author;
    Book(String t,String a){
        title=t;
        author=a;
    }
    abstract void display();
}
 
class MyBook extends Book{
    private int price;
    
    MyBook(String title, String author, int price){
        super(title, author);
        this.price = price;
    }
 
    @Override
    void display() {
        System.out.printf("Title: %s\nAuthor: %s\nPrice: %d\n"super.title, super.author, price);
    }
    
//end MyBook
 
public class Solution
{
   
   public static void main(String []args)
   {
      Scanner sc=new Scanner(System.in);
      String title=sc.nextLine();
      String author=sc.nextLine();
      int price=sc.nextInt();
      Book new_novel=new MyBook(title,author,price);
      new_novel.display();
      
   }
}
cs

결과 : 

Title: The Alchemist

Author: Paulo Coelho

Price: 248


+ Recent posts