public class scope_and_lifetime {
int num1, num2; //Instance Variables
static int result; //Class Variable
int add(int a, int b){ //Local Variables
num1 = a;
num2 = b;
return a+b;
}
public static void main(String args[]){
scope_and_lifetime ob = new scope_and_lifetime();
result = ob.add(10, 20);
System.out.println("Sum = " + result);
}
}
클래스이름.클래스변수명
의 형태로 사용 가능클래스이름.클래스변수명
)형변환 연산자를 사용
double d = 85.4;
// ( 변환하고 싶은 타입 ) 피연산자
int score = (int) d;
주의 :
primitive type (기본형) 에서 boolean 을 제외한 나머지 값들은 서로 형변환 가능
Integer.toBinaryString(int i)
를 사용하여primitive type 과 reference type(참조형) 간의 형변환은 불가능하다.
참조형 타입과 참조형 타입의 형변환
상속관계가 아닌 클래스간의 형변환은 불가능
참조변수의 형변환을 통해 참조하고 있는 인스턴스에서 사용할 수 있는 멤버의 범위를 조절하는 느낌으로 사용한다.
객체지향 - 다형성과 관련된 내용
- 다형성
- 여러가지 형태를 가질 수 있는 능력
> 자바에서는 한타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다향성을 프로그램적으로 구현하였다.
>
- 조상클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조할 수 있도록 하였다는 뜻
- 같은 타입의 인스턴스라도 참조변수의 타입에 따라 사용할 수 있는 맴버의 갯수가 다르다.
- 단, 참조변수가 사용할 수 있는 멤버의 개수는 인스턴스의 맴버 개수보다 같거나 적어야한다.
- 조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있다.
- 자손타입의 참조변수로 조상타입의 인스턴스를 참조할 수 없다.
// Class FireEngine 은 Class Car 를 상속받는다.
Car car = null;
Car rearCar = new Car();
FireEngine fe = new FireEngine();
FireEngine fe2 = null;
FireEngine fe3 = null;
car = fe; // 자동 형변환 진행 car = (Car) fe;
fe2 = (FireEngine) car; // 형변환 생략 불가능
fe3 = (FireEngine) rearCar; // 에러 : ClassCastException
// 조상타입의 인스턴스를 자손타입의 참조변수로 참조하는것은 허용되지 않는다.
자손타입 → 조상타입 으로 형변환
조상타입 → 자손타입 으로 형변환
incompatible type
연산과정에서 자동적으로 발생하는 형변환을 산술변환이라고 함
int intA = 30;
double doubleA = 1.0 + intA // intA 앞 (double)intA 생략
표현의 범위가 더 넓은 타입으로 형변환을 통해 타입을 일치시킨 후 연산을 수행
→ 값손실의 위험을 최소화 하기 위함