-- 캡슐화
-- 상속
-- 추상화
-- 다형성
class TestClass2{ int iv; static int cv ; void instanceMethod(){ System.out.println(iv); // 가능 인스턴스 메서드 ( 객체 생성후 호출 가능 ) -> 객체를 생성후 호출 하기 때문에 가능 System.out.println(cv); // 가능 }; static void staticMethod(){ System.out.println(iv); // 오류 : static 메서드 ( 객체 생성없이 호출 가능 ) iv는 인스턴스 객체가 있는경우 호출가능 System.out.println(cv); // 가능 } }
정의 : 한 클래스 안에 같은 이름의 메서드 여러개를 정의하는 것
오버로딩 성립조건
1. 메서드 이름이 같아야한다.
2. 매개변수의 개수 또는 타입이 달라야한다.
3. 반환타입은 영향없다.
int add( int a, int b ) { return a + b; }
int add( int x , int y ) { return x + y; }
-> 오버 로딩 X
error : add ( int , int ) is aleady defined 이미정의 되어있다. (타입이동일하다.)
int add ( int a, int b ) { return a + b; }
long add ( int a, int b ) {return ( long ) a + b; }
-> 오버 로딩 X
error 2번조건 : 반환타입만 바뀌었지 타입이 다르지 않다.
long add ( int a, long b ) { return a + b; }
long add ( long a , int b ) { return a + b; }
-> 오버로딩 O
단 add ( 3, 3 ) 인경우 컴퓨터가 판단을 내릴수 없어 에러가 나올수 있다.
error ambiguous에러 ( 모호하다 )
Time t = new Time();
t.hour = 12;
t.minute = 34;
t.second = 56;
-> Time t = new Time( 12, 34, 56 );
-- 이름이 클래스 이름과 같아야한다.
클래스 이름.( 타입변수명, 타입변수명, ... ) {
// 인스턴스 생성시 수행될 코드,
// 주로 인스턴스 변수의 초기화 코드를적는다.
}
class Card <-(클래스이름) {
...
Card() <-생성자 { // 매개변수 없는 생성자
// 인스턴스 초기화 작업
}
Card <- 생성자 (String kind, int number) { // 매개변수 있는 생성자
// 인스턴스 초기화 작업
}
추가
-- 프로그램 = 명령어 + data
ex ) ADD( 명령어 ) = ( 5 , 3 )( data )
-- 객체 = 변수의 묶음 ( data )
1 == 최상단
3 == 최하단