fork(1) download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Demo040401_Car {
  9. String color;//차량 색상
  10. int door;//문 갯수
  11. Demo040401_Car(){
  12. this(null,0);//기본 생성자가 매개변수를 보유한 생성자 호출
  13. }
  14.  
  15. public Demo040401_Car(String color, int door) {
  16. this.color=color;//매개변수를 인스턴스 전역변수에 넣어줍니다.
  17. this.door=door;
  18. }
  19.  
  20. public void drive(){//시동 부르릉
  21. System.out.println("brrrrrr~~~");
  22. }
  23. public void stop(){//멈춤 삐삐!!
  24. System.out.println("장비를 정지합니다. 어? 안돼잖아??????");
  25. }
  26. public void overriding(){//부모 메소드를 오버라이딩합니다.
  27. System.out.println("Car Overriding");
  28. }
  29. }
  30. class Demo040401_FireEngine extends Demo040401_Car {
  31.  
  32. public Demo040401_FireEngine() {
  33. this(null,0);//기본생성자가 매개변수를 보유한 생성자를 호출
  34.  
  35. }
  36.  
  37. public Demo040401_FireEngine(String color, int door) {
  38. super(color, door);//자식 객체는 부모객체에게 매개변수를 제공
  39.  
  40. }
  41. public void water(){//불이났습니다 물뿌려주세요
  42. System.out.println("야 꺼 불꺼! 불이야 불! 도와주세요!");
  43. }
  44.  
  45. public void overriding(){//부모의 메소드를 오버라이딩합니다.
  46. System.out.println("Fire Overriding");
  47. }
  48. public void Caroverriding(){
  49. super.overriding();//오버라이딩한 메소드의 부모 메소드를 호출합니다.
  50. }
  51.  
  52. }
  53.  
  54. class Demo040401_Main {
  55.  
  56. public static void main(String[] args) {
  57.  
  58. Demo040401_Car car = null;
  59. //부모타입변수 = null
  60. Demo040401_FireEngine f1= new Demo040401_FireEngine();
  61. //자식타입변수 = 자식객체
  62. Demo040401_FireEngine f2= null;
  63. //자식타입변수 = null
  64.  
  65. f1.water();
  66. car= f1;
  67. //부모타입변수 = 자식타입객체
  68. //car.water(); 부모는 자식의 메소드가 없기때문에 사용할수없다
  69. f2=(Demo040401_FireEngine)car;
  70. //자식타입변수 = (자식타입형변환)부모타입객체
  71. f2.water();
  72.  
  73. //오버라이딩의 다형성
  74. f1.overriding();//자식의 메소드를 호출
  75. car.overriding();//자식의 메소드를 호출
  76. f2.overriding();//자식의 메소드를 호출
  77. f1.Caroverriding();//super를 사용한 부모의 메소드를 강제 호출
  78.  
  79.  
  80. }
  81.  
  82. }
Success #stdin #stdout 0.1s 320576KB
stdin
Standard input is empty
stdout
야 꺼 불꺼! 불이야 불! 도와주세요!
야 꺼 불꺼! 불이야 불! 도와주세요!
Fire Overriding
Fire Overriding
Fire Overriding
Car Overriding