객체지향 4 대 특징
* 캡슐화 , 은익화
* 상속
* 다형성 ( Overload, Overriding)
* 추상화 (복잡한것을 단순화 )
클래스 설계자 입장
클래스 사용자 입장
* OverLoad (오버로드)
1. 하나의 클래스 내에 이름이 같은 메서드가 여러개인 경우
2. 구분은 매개변수(인수) 로 한다 , 인수 갯수가 다르거나 , 인수자료형이 달아야 한다
------------------------------------
class AA extends Object
{
void aa(){}
int aa(int a){}
String aa(String name){}
}
------------------------------------
3. 확장(상속)이 가능하다
4. 리턴형은 같아도 달라도 상관없다
* Overrding (오버라이딩)
1. 상속 받은 메서드 내용 재정의
2. 리턴형, 인수개수 , 인수자료형은 반드시 같아야 한다
3. 접근제한자 상위와 같거나 , 더 넓은 개념으로 사용하면 된다
( 상위의 proptected 는 public 사용가능 하다 )
4. 상속 관계로서 사용 가능
5. 확장(상속)가능 하다
*
----------------------------------------------------------------
class 클래스이름
{
// 변수 선언
private int age ; // 은폐필드 ( 자신의 클래스 내에서만 사용 가능)
생략 int age; // 같은 패키지 내에서 사용 가능
proptected String name ; // 보호필드 ( 자신의 클래스와 , 상속 받은 클래스에서 사용 가능 )
public String pum;// 공개필드 ( 어디서나 사용 가능)
private 리턴형 메서드명(){}
생략 리턴형 메서드명(){}
protected 리턴형 메서드명(){}
public 리턴형 메서드명(){}
}
class 클래스이름2 extends 클래스이름 implements 인터페이스명
{
}
----------------------------------------------------------------
* 메서드란
기본적으로 프로그램 명령문의 집합이며, 자바에서는 실행의 기본 단위가 된다
메서드는 클래스에 속한 일 부분이다
* 클래스란
하나 이상의 변수, 또는 메서드를 포함하고 있는 변수와 메서드 집합체이다
하나의 단위 프로그램이다( 모듈)
* 자바 프로그램이란
하나 이상의 클래스로 구성된 클래스 집합체이다 .
저장은 main() 이 소속해 있는 클래스 이름으로 저장 한다
프로그램을 실행하는 동안에 동일 클래스나 , 다른클래스에 있는 메서드를 호출할 수 있다
프로그램 코드는 항상 메서드내에 존재해야 하며, 메서드는 항상 클래스내에 존재해야 한다
------------------------------------------------
메서드 기본 형식
------------------------------------------------
[접근제한자] 리턴형 메서드명(인수)
{
처리내용 ;
}
------------------------------------------------
[접근제한자] [static] 리턴형 메서드명(인수) throws ExceptionList
{
처리내용 ;
}
------------------------------------------------
public static void main(String args[]) throws IOException
{
}
------------------------------------------------
메서드는 실행중 런타임오류가 발생할 수 있다.
자바에서는 이런 문제를 다룰 수 있는 예외처리 기능이 제공된다
<< 메서드 예제 >>
void aa() {}
boolean bb(int a) {}
int cc(String str){}
void ee(char ch){}
===형식============================
리턴형 메서드명()
{
처리;
return 값;
}
===============================
void aa()
{
처리 ;
}
---------------------------------
int aa()
{
처리 ;
return 100;
}
---------------------------------
char aa()
{
처리
return 'A';
}
---------------------------------
double aa()
{
처리
return 12.5;
}
---------------------------------
String aa()
{
처리;
return "kim";
}
---------------------------------
클래스이름 aa()
{
처리;
return 객체;
}
---------------------------------
<<< 메서드 호출 >>>
자신의 클래스에서는 메서드 호출 ==> 메서드명(인수값)
다른클래스의 메서드 호출 ==> 객체생성하고, 객체.메서드(인수값)
static 메서드 호출 =====> 클래스이름.메서드(인수값) ex) Math.random()
객체생성하고, 객체.메서드()
<< static 메서드들 >>=== java.lang.Math
public static double abs(double a) ==> 절대값
public static double ceil(double a) ==> 올림값
public static double floor(double a) ==> 내림값
public static double round(double a) ==> 사사오입
public static double max(double a,double b) ==> 둘 중 큰값를리턴
public static double min(double a,double b) ==> 둘 중작은 값를리턴
static 메서드
1. static 멤버변수는 오직 하나의 인스턴스만을 갖는다
2. static 메서드는 static으로 선언된 변수,메서드만 호출 가능하다
3. static 으로 선언된 것은 객체 생성 않고도 호출 가능한다
예: Math.max(7,8)
4. static 멤벼 변수는 그 클래스내의 모든 객체가 , 그를 공유한다
5. static 메서드에서는 this 사용 못함 : 자신을 2번 지칭하는 것이므로
※ static 으로 선언된 필드는 모든 클래스 객체를 통틀어 하나만 존재해야한다
이들 모든 객체가 공유하게 된다
------------------------------------------------
<끝>