개발자노트 (260) 썸네일형 리스트형 클래스) 상속..오버라이딩, toString 응용예제(포켓몬) package class05; import java.util.Random; class Pokemon { String name; int level; int exp; @Override public String toString() { String msg = this.name + " "; msg += "Lv." + this.level + " "; msg += "[" + this.exp + "/100]"; return msg; } void action() { System.out.println(this.name + "이(가) ㅁㅁ공격!"); if (this.check()) { this.success(); } else { this.fail(); } } boolean check() { Random rand = new .. 클래스) 상속..오버라이딩,다운캐스팅 응용예제(카드사용) 다운캐스팅을 하는 이유 = 객체와 문자열을 비교하기 위해서. package class01; // 1. 요구사항(조건)을 파악 class Card{ String name; int money; boolean flag; int limit; void pay(int money) { if(this.flag && this.money+money>this.limit) { this.alert(); return; } this.money+=money; System.out.println(this.name+"님 결제완료. 누적사용금액: "+this.money); } void alert() { System.out.println(this.name+"님, 제한금액을 초과하여 사용할수없습니다!"); } Card(String name){.. 클래스) 상속..오버라이딩 package class04; class Person{ String name; void hello() { System.out.println("안녕하세요!"); } Person(String name){ this.name=name; } } class Student extends Person{ // 상속 int score; // 학생 고유의 멤버변수 void hello() { // 함수 재정의 == 오버라이딩 System.out.println("^_^"); } Student(String name,int score){ super(name); this.score=score; } @Override public String toString() { return this.name+"학생: "+this.score+"점";.. 클래스) 상속..최상위 클래스 Object, toString, 오버라이딩 package class04; // [최상위 클래스 Object] class Book extends Object{ // 따로 추가하지 않아도 Object를 상속받고 있었다. // 함수 재정의 // 오버라이딩 @Override // 지우면 b가 책입니다 안뜨고 주소값이 뜸 public String toString() { // TODO Auto-generated method stub return "책입니다."; } } public class Test10 { public static void main(String[] args) { Book b=new Book(); System.out.println(b); // b.toString이 자동 호출이 되었기 때문에 System.out.println(b.toString.. 클래스) 상속 - 오버라이딩 [오버로딩=상속관계가X]함수명 중복정의를 허용했지만 , 인자의 개수나 자료형이 달라야만 했다! [오버라이딩=상속관계O]상속관계에서 함수 재정의를 허용 조건 : 인자의 개수,자료형 모두 같아야만 한다. --> input output 이름 다 같은데 , 내용만 다름 자식 입장에서 부모의 메서드가 맘에 들지 않을 때 ,혹은 추가로 하고 싶을 때 오버라이딩 사용 package class04; class A{ void func1() { System.out.println("A"); } } class B extends A{ // 상속관계에서 함수 재정의를 허용 // [오버라이딩] // 인자의 개수,자료형 모두 같아야만한다! void func1() { System.out.println("B"); } } public c.. 클래스) 상속의 상화관계 이해를 위한 "색깔점" 예제 package answer; class Point{ int x; int y; void move(int x) { this.x=x; this.y=x; } void showInfo() { System.out.println("("+this.x+","+this.y+")"); } Point(){ this(0,0); } Point(int x){ this(x,x); } Point(int x,int y){ this.x=x; this.y=y; } } class ColorPoint extends Point{ String color; void cc(String color) { this.color=color; } void showInfoColorPoint() { System.out.println(this.color+"("+th.. 클래스) 상속, 생성자 호출 package class03; class A { int a; int b; /*A() { System.out.println("A 기본생성자"); } */ A(int a, int b) { this.a = a; this.b = b; System.out.println("A 생성자"); } } // 하위 클래스인 B를 코딩하고 있는 상황은, // A의 설계가 완료되었음을 의미 class B extends A { int c; B() { super(10,20); // 부모의 생성자를 호출하는 것 //A의 기본생성자를 사용하지 않는 상황도 있음!!, 설계(A)를 고치면 안됨! // => A에게 존재하는 다른 생성자를 사용해서, 나의 A 부분을 완성하면됨! // 부모에게 기본생성자가 없다면, 모든 자식 생성자에서 문제 .. 클래스 ) 상속 [상속] = 이전에 개발 했던걸 다음 단계에서도 그대로 써야 하거나 논리적으로 상하관계(부모자식관계) 가 있을 때 사용 상속관계에서는 자식공간에서 부모공간을 다 가져온 다음에 만들어지기 때문에 부모공간에서 먼저 생성자를 만들어줘야한다. package class03; // [상속] // 이전에 개발 했던걸 다음 단계에서도 그대로 써야 하거나 논리적으로 상하관계(부모자식관계) 가 있을 때 사용 class Shape{ //모양 클래스: 부모, 상위 클래스 String name; double area; void showInfo() { System.out.println(this.name+" "+ this.area); } Shape(){ System.out.println("Shape에서 호출한 기본 생성자"); }.. 이전 1 ··· 19 20 21 22 23 24 25 ··· 33 다음