java 221108

John·2022년 11월 8일
0

java

목록 보기
10/20
post-thumbnail

super 특
부모부터 메모리에 올린다.
부모의 생성자를 생성하는 경운는 두가지이다

  • 개발자가 부모의생성자
  • 컴파일러가 
    근데
    개발자가 부모생성자를 호출하지 않으면 컴파일러가 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+.....;
    }
}

위와같이 파라미터에 여러방식으로 입력해도 작동이 되도록
밑작업을 하는것이라 볼수있겠다.

다형성 - polymorphism

특징

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

스킬 또한 신세대에서 사용할경우 새로운 방식으로 계산된다.
덮어썼기때문이다.

-시발-

profile
hello there

0개의 댓글