OOP (Object Oriented Programming) : 객체지향
1. 객체지향 개념
2. 메서드와 오버로드( OverLoad ), 변수 유효 범위
3. 생성자 , 생성자 중복(Overload)
4. this, super 키워드
5. 클래스
6. 인터페이스, 추상클래스
7. 클래스 상속, 인터페이스 상속 , 추상 클래스 상속
oop (Object Oriented Programming) : 객체지향
객체지향 개념 : 하나의 클래스를 객체라 한다
( 클래스=모듈(단위프로그램))
( 클래스는 레퍼런스 자료형 이다 )
1. 객체지향 4 대 특징
☞ 캡슐화 , 은익화
☞ 상속
☞ 다형성 ( Overload, Overriding)
☞ 추상화 (복잡한것을 단순화 )
클래스 설계자 입장
클래스 사용자 입장
다형성(Polymorphism)이란, 한가지로 여러 가지의 일을 한다는 뜻이다.
프로그램에서 하나의 형태로 여러 가지 작업을 하는것이 바로
다형성의 뜻 입니다
의미(semantics)는 하나지만 실제 형태는 여러 가지가 될 수 있다는 말이다
먹는다( ){
내용: 과자를 먹는다
}
먹는다( ){
내용: 밥을 먹는다
}
먹는다( ){
내용: 과일 먹는다
}
다형성은 객체지향 프로그래밍 언어에서
"오버로딩 (overloading)", "오버라이딩 (overriding)"의 형태로 나타난다.
* OverLoad (오버로드)
1. 하나의 클래스 내에 이름이 같은 메서드가 여러개인 경우
2. 구분은 매개변수(인수) 로 한다 , 인수 갯수가 다르거나 , 인수자료형이 달아야 한다
------------------------------------
class AA
{
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
{
}
------------------------------------------------
===============================
<<< 메서드 호출 >>>
자신의 클래스에서는 메서드 호출 ==> 메서드명(인수값)
다른클래스의 메서드 호출 ==> 객체생성하고, 객체.메서드(인수값)
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 메서드
- static 메서드는 static으로 선언된 변수,메서드만 호출 가능하다
- Math.max(5,2) => static 으로 선언된 메서드는 객체생성 않고도 호출가능
클래스.메서드();
- static 변수는 모든 객체가 그를 공유 할 수 있다
- static 메서드에서는 this 사용 못함 : 자신을 2번 지칭하는 것이므로
접근제한자 ( 접근 지정자)
1. private : 자신의 클래스 내에서만 접근 가능
2. 생략 : 같은 패키지 내에서 접근 가능
3. protected : 자신의 클래스(수퍼클래스)와 파생 클래스 에서만 접근 가능
4. public : 어디서나 접근 가능
변수 유효 범위
- 전역변수 : 메서드 외부, 클래스 내부에 선언된 변수(자동 초기화 된다)
- 지역변수 : 메서드 내에서 선언한 변수(자동 초기화 안된다)
* 전역 변수
- 은폐필드 : private 으로 선언된 필드(변수) ( 자신의 클래스에서만 접근 가능)
- 보호필드 : protected 으로 선언된 변수(자신의클래스와 파생 클래스에서만 접근 가능)
- 공개필드 : public 으로 선언된 변수(어디서나 접근 가능)
<끝>
'Web Programming > Java' 카테고리의 다른 글
Java(자바) PreparedStatement 클래스와 Statement 클래스 비교 (0) | 2018.01.20 |
---|---|
Java(자바) IO(Input / Output) (0) | 2018.01.20 |
Java(자바) Exception(예외) (0) | 2018.01.20 |
Java(java) Dialog(대화상자) (0) | 2018.01.20 |
Java(java) Layout(레이아웃) (0) | 2018.01.20 |