super 특
부모부터 메모리에 올린다.
부모의 생성자를 생성하는 경운는 두가지이다
class SuperCLS { public SuperCLS() { System.out.println("I'm Super Class"); } } class SubCLS extends SuperCLS { public SubCLS() { System.out.println("I'm Sub Class"); } } class SuperSubCon { public static void main(String[] args) { new SubCLS(); } }
상위인 super 의 내용이 먼저나온다
파라미터의 개수 타입을 달리하는것을 말한다
class Calculator{ int Calcul(num1, num2){ return num1+num2; } void Calcul(num1, num2, num3...){ return num1+num2+num3+.....; } }
위와같이 파라미터에 여러방식으로 입력해도 작동이 되도록
밑작업을 하는것이라 볼수있겠다.
특징
class Pokemon { String name; int skillNum; public Pokemon(String name, int skillNum) { this.name = name; this.skillNum = skillNum; } public void getDamage() { System.out.println( "this skill damage is " + skillNum * 10); } } //성격이 추가된 3세대와 비교하자 class PokemonRuby extends Pokemon { int character; public PokemonRuby(String name, int skillNum) { super(name, skillNum); this.character = (int) Math.random() * 3; }//성격값이 없는 구개체는 랜덤으로 배정 public PokemonRuby(String name, int skillNum, int character) { super(name, skillNum); this.character = character; } //성격이 주는 데미지보너스도 추가해준다. @Override public void getDamage() { int chBonus = 0; if (character > 0 && character % 2 == 0) chBonus += 1; System.out.println( "this skill damage is " + (skillNum * 10) * (1 + chBonus) ); } }
위를 기반으로 개체를 생성해보자
Pokemon PAIRI = new Pokemon("pairi", 5); PokemonRuby RIAKO = new PokemonRuby("riako", 3, 2);
기본적으로 자기세대에 맞게는 작성이 가능하다
조금 변형하여
Pokemon PAIRI = new PokemonRuby("pairi", 5);
구세대 개체를 교환을 통해 신세대로 신세대 소프트로 가져오는것은 가능하다.
구세대의 시스템을 모두 가진 소프트이기 때문이다.
PokemonRuby Riako = new Pokemon("riako", 3, 2);
하지만 그 반대로
구세대와 달리 성격 시스템이 추가된 신세대 개체를
구세대 소프트로 가져가는것은 불가능하다.
기능이 많아졌지만, 옛 소프트에서는 구현할수 없기때문이다.
@Override public void getDamage() { int chBonus = 0; if (character > 0 && character % 2 == 0) chBonus += 1; System.out.println( "this skill damage is " + (skillNum * 10) * (1 + chBonus) );
스킬 또한 신세대에서 사용할경우 새로운 방식으로 계산된다.
덮어썼기때문이다.
-시발-