본문 바로가기

개발 노트/기초 지식42

[java] this 와 super this 지역변수와 인스턴스 변수가 같은 경우 this 를 사용하여 클래스 명이 바뀌었을때 관리를 쉽게 할수있다 인스턴스 변수 : 클래스 내에서 선언한 변수 지역 변수 : 메소드 내에서 선언한 변수 super 상속관계에서 부모 클래스를 가져와서 매개변수에 값을 넣어 사용 시 super(매개변수) 를 사용한다 매개 변수가 없는 메소드를 가져올 시 매개변수를 넣으면 에러가 난다 "Unit.java" public class Unit { int hitPoint; // 인스턴스 변수 int speed; int range; int damage; public Unit(int a, int b, int c, int d) { this.hitPoint = a; // Unit이라는 메소드 내의 지역 변수, 여기선 같은 Uni.. 2022. 4. 25.
[java] 상속 extends 상속 extends 부모의 무언가를 자식에게 줄때 상속(Inheritance)라는 말을 쓴다 프로그래밍에서는 상속을 확장(extends) 이라고도 표현하고 extends 를 사용하여 상속기능을 한다 클래스 a 의 메소드와 변수를 다른 클래스가 갖도록(=사용가능 하도록) 하는 것. 재사용성,유지보수 편의성, 가독성, 코드량 함축의 장점이 있다 스타크래프트로 설명해보자 "Unit.java" public class Unit { int hitPoint; int speed; int range; int damage; } "TerranUnit.java" public class TerranUnit extends Unit { // 테란 유닛도 unit 의 성질을 가지고 있어야 하므로 unit 클래스를 상속하였다 bool.. 2022. 4. 25.
[java] 접근제어자 접근제어자가 나타내는 접근가능 (=데이터를 가져올수있는 지) 여부는 아래와 같다 같은 클래스 같은 패키지 다른 패키지 지만 상속된 클래스 상속되지 않은다른 패키지 public O O O O protect O O O X default O O X X private O X X X 이를 스타크래프트로 비유해보자 테란 유닛 메딕은 지상 생체 유닛이라면 타 종족의 유닛이라도 체력을 회복시켜준다 패키지를 종족별 유닛으로 구분한다고 치면 메딕의 데이터는 아래와 같다고 하자 테란 유닛.pakage ↘ 지상생체유닛.class ↘ 회복.method 를 가짐 우리의 메딕은 메딕영웅이라 우리가 아는 것과 달리 치료 대상의 범위를 멋대로 조정가능하다고 가정하자 new 메딕영웅 테란 지상생체유닛 (같은 클래스) 테란 유닛 (같은 .. 2022. 4. 22.
[java] static 의 이해 스타크래프트 게임에서 질럿을 뽑아보자 프로토스라는 패키지 안의 여러 건물과 유닛의 클래스가 존재한다 그 중 유닛인 질럿과 질럿의 업그레이드 건물 포지 질럿 생산 건물인 게이트 웨이의 관계를 이용하여 static 을 설명가능하다 질럿은 게이트 웨이에서 생산가능하며 생산 시 명령은 다음과 같다 질럿 질럿1 = new 질럿;질럿이라는 객체의 클래스를 보면 다음과 같다 class 질럿 { name : 질럿; attack : 16; hp : 100; shield : 60; }non-static 이 아닌 방식으로 attack을 높이려면 일단 new 질럿으로 생성해서 각각의 질럿들을(=인스턴스들) 만들어 하나씩 수정 할 부분의 데이터를 고치게 되지만 non-static 의 경우 class 변수 = new class(.. 2022. 4. 21.