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 으로 선언된 변수(어디서나 접근 가능)


<끝>

Posted by 홍이홍이
,

1. PreparedStatement 는 준비된 Statement 이다

   미리 SQL문이 셋팅된 Statement가 DB에 전송되어저 컴파일되어지고

   SQL문의 ? 부분만 나중에 추가 셋팅해서 실행이 되어지는 

   준비된 Statement 이다 


<Statement 사용법>


Statement stmt=con.createStatement();// 생성, 생성시 인자 안들어간다 

stmt.executeUpdate(sql);// 실행시 인자가 들어간다

stmt.executeQuery(sql);


<PreparedStatement 사용법>


PreparedStatement pstmt=con.prepareStatement(sql);// 생성시 인자 들어간다

pstmt.setXxx(1,값);

pstmt.setXxx(2,값);

pstmt.setXxx(3,값);

pstmt.executeUpdate();// 실행시 인자 안들어간다 

pstmt.executeQuery();


------------------------------------------------------------------------------------

2. PreparedStatement 장점

    반복적(for) 인 SQL문을 사용할 경우에 Statement보다 빠르다

   (이유는  ? 를 제외한 SQL문이 DB에서 미리 컴파일 되어져서 대기하고 있기 때문에)



3. 단점 

    SQL문마다 PreparedStatement 객체를 각각 생성해 줘야 한다

    ( 재 사용이 불가능해서, 새로 생성 해야 한다 )

   Statement객체는 SQL문이 달라지더라도 한개만 생성해서 재사용 가능하다

    ( 실행시 sql 문이 들어가기 때문에) 



4. Statement  반복 사용 할때 


  stmt=con.createStatement();

  String content="김장면";

  for(int i=0; i<10000;i++)

   {

      //stmt.executeUpdate("insert into test values('"+content+"')");

      stmt.executeUpdate("insert into test values('김장면')"); //실행시 인자가 들어간다

   }



5.  PreparedStatement 반복 사용 할때 


    pstmt=con.prepareStatement("insert into test values(?)"); // 생성시 인자가 들어간다.


    for(int i=0 ; i<10000;i++)

    {

     pstmt.setString(1,content+i);

     pstmt.executeUpdate();

    }


<끝>

Posted by 홍이홍이
,

IO( Input /Output)


자바의 스트림은 문자 스트림과 바이트 스트림으로 구분할 수 있습니다


문자 스트림은 16비트단위로, 바이크스트림은 8비트 단위로 데이터를 읽고,쓰기를 합니다.


메모장 으로 읽을 수 있으면 문자스트림,  읽을수 없으면 바이트스트림이 사용된 것입니다


문자스트림은 16비트 유니코드로 데이터를 입출력할 때 사용합니다.


 
* Writer 추상클래스는 모든 문자 출력 스트림에 사용할 수 있는 기능을 정의 한다

* OutputStreamWriter클래스는 특정문자 인코딩 규칙에 따라 문자 스트림을
   바이트 스트림으로 변환한다

* FileWriter 클래스는 OutputStreamWiter를 확장하고 문자를 파일에 출력한다

<생성자>
OutputStreamWriter(OutputStream os)  throws IOException
   :  특정문자 인코딩 규칙에 따라 문자스트림을 바이트 스트림으로 변환한다

OutputStreamWriter(OutputStream os, String encoding )  throws IOException
 :  os는 출력스트림이고 encoding 은 문자 인코딩 이름이다

인코딩문자 : KSC5601 , EUC-KR , UTF-8

<생성자>
FileWiter(String filepath) throws IOException
               Filepath =>  파일 전체 경로

FileWriter(String filepath, boolean append)  throws IOException
               append => true 이면 문자 파일 끝에 추가된다

FileWriter(File fileObj)  throws IOException

<생성자>
InpuStreamReader(InputStream is)  throws IOException
               is는 입력스트림, encoding은 사용자 시스템에 설정된 기본문자 인코딩

InpuStreamReader(InputStream is, String encoding)  throws IOException

<생성자>
FileReader(String filepath) throws IOException
               filepath  파일 전체 경로 이름

FileReader(File fileObj) throws IOException



 



<끝>

Posted by 홍이홍이
,

Exception (예외)


사전에 프로그래머가 예상해서 처리할 수 있는 에러로 

예외 종류는 클래스 계층구조로 되어 있다 


자바에서는 예사할 수 있는 여러 가지 상황에 대비하여 

코드를 작성하게 함으로써

좀더 견고한 ( 즉, 잘 죽지않은 )프로그램을 만들 도록 유도한다 

 
예외 처리하는 방법 2가지 

방법1)  직접처리 
에러가 발생할 수 있느 부분을 try{}문으 감싸놓고 , 에러가 발생할때 처리할 내용을 catch문으로 감싸놓는다 
------------------------------------------
try{
처리문 ;
            처리문 ;
            처리문 ;
    }catch( 예외 종류 ){ 주로 메시지 출력 }
     catch( 예외 종류 ){ 주로 메시지 출력 }
     catch( 예외 종류 ){ 주로 메시지 출력 }
    finally절{}
------------------------------------------
※ finally절은 예외 발생과 상관 없이 수행 된다
  심지어 앞에 return 문이 있어도 finally절은 수행 된다 
  그러나 앞에 System.exit(0) 문이 있때는 finally절은 수행되지 않는다 

방법2)  간접처리 
----------------------------------
리턴형 메서드(인수) thows 에외종류 
{
  처리문 ;
            처리문 ;
            처리문 ;

}
----------------------------------
위의 경우는 메서드 내용을 처리하는 동안 예외가 발생하면 
메서드를 호출했던 그 곳으로 제어권을 넘긴다 

main() throws Exception 경우는 예외 가 발생하면 JVM 으로 되돌린다 


<< throw >>

ex: new Test(); 객체생성 
    throw new TestException(); // 객체생성 (예외 발생 )

[ 설명 ]
새로운 Exception를 정의하고 ,
throw 문을 이용해서 새로 정의한 Exception을 발생시킬때 사용한다

--구조---------------------------------------------------

class ExceptionTest
{
   void method() throws MyException
     {
       if(MyException발생 조건)
        {
           throw new MyException("메세지");
         }
      }
 }


class MyException extends Exception
{
    public MyException(String msg)//생성자 
     {
        super(msg);// 상위 클래스 생성자 호출 
     }
}
---------------------------------------------------

<끝>Exception (예외)


사전에 프로그래머가 예상해서 처리할 수 있는 에러로 

예외 종류는 클래스 계층구조로 되어 있다 


자바에서는 예사할 수 있는 여러 가지 상황에 대비하여 

코드를 작성하게 함으로써

좀더 견고한 ( 즉, 잘 죽지않은 )프로그램을 만들 도록 유도한다 

 
예외 처리하는 방법 2가지 

방법1)  직접처리 
에러가 발생할 수 있느 부분을 try{}문으 감싸놓고 , 에러가 발생할때 처리할 내용을 catch문으로 감싸놓는다 
------------------------------------------
try{
처리문 ;
            처리문 ;
            처리문 ;
    }catch( 예외 종류 ){ 주로 메시지 출력 }
     catch( 예외 종류 ){ 주로 메시지 출력 }
     catch( 예외 종류 ){ 주로 메시지 출력 }
    finally절{}
------------------------------------------
※ finally절은 예외 발생과 상관 없이 수행 된다
  심지어 앞에 return 문이 있어도 finally절은 수행 된다 
  그러나 앞에 System.exit(0) 문이 있때는 finally절은 수행되지 않는다 

방법2)  간접처리 
----------------------------------
리턴형 메서드(인수) thows 에외종류 
{
  처리문 ;
            처리문 ;
            처리문 ;

}
----------------------------------
위의 경우는 메서드 내용을 처리하는 동안 예외가 발생하면 
메서드를 호출했던 그 곳으로 제어권을 넘긴다 

main() throws Exception 경우는 예외 가 발생하면 JVM 으로 되돌린다 


<< throw >>

ex: new Test(); 객체생성 
    throw new TestException(); // 객체생성 (예외 발생 )

[ 설명 ]
새로운 Exception를 정의하고 ,
throw 문을 이용해서 새로 정의한 Exception을 발생시킬때 사용한다

--구조---------------------------------------------------

class ExceptionTest
{
   void method() throws MyException
     {
       if(MyException발생 조건)
        {
           throw new MyException("메세지");
         }
      }
 }


class MyException extends Exception
{
    public MyException(String msg)//생성자 
     {
        super(msg);// 상위 클래스 생성자 호출 
     }
}
---------------------------------------------------

<끝>


Posted by 홍이홍이
,

Dialog(대화상자)


- 그래픽 사용자 인터페이스에서 대화상자는

사용에게 정보를 표시하고

사용자로부터 정보를 얻는데 사용된다 


- modal 대화상자는 현재 대화상자를 종료하지 않고는

 다른 창으로 이동할 수 없다 


-반면에  modaless 대화상자는 현재 대화상자를 종료 하지 않고도 

다른 창으로 이동할 수 있다 


- Window클래스를 상속받은 Dialog클래스는  

모든 사용자 인터페이스 구성요소(컴포넌트)를 사용할 수 있다 


- 생성자 

Dialog(Frame parent)

Dialog(Frame parent, boolean flag)

Dialog(Frame parent , String title)

Dialog(Frame parent , String title, boolean flag )


parent  : 대화상자가 소속될 객체 ( 부모 객체 )

title : 창제목

flag  : true( modal 대화상자)

         false ( modaless 이다 )



-FileDailog


Diallog 을 상속받은 FileDialog 클래스는 

사용자가 파일을 읽고 / 쓰기 하기 위한 대화 상자이다 


- 생성자 

FileDialog (Frame parent)

FileDialog (Frame parent , String title)

FileDialog (Frame parent , String title, int rw)


parent  : 대화상자가 소속될 객체 ( 부모 객체 )

title : 창제목

rw : read / write  모드 


<끝>

'Web Programming > Java' 카테고리의 다른 글

Java(자바) IO(Input / Output)  (0) 2018.01.20
Java(자바) Exception(예외)  (0) 2018.01.20
Java(java) Layout(레이아웃)  (0) 2018.01.20
Java(자바) 이벤트 종류와 Interface(인터페이스)  (0) 2018.01.20
Java(자바) awt  (0) 2018.01.20
Posted by 홍이홍이
,

1. LayoutManager란 :  

Container위에 붙어 있는 각 Component들의 위치와 크기를 관리하는 인터페이스

Layout은  component 배치관리자 이다


2. Layout 종류 


1)  FlowLayout : panel 계열에 디폴트(deault)로 적용


2)  BorderLayout :window 계열에 디폴트(default)로 적용


3)  GridLayout : 동일한 격자 모양


4)  GridBagLayout : 다양한 크기 지정  ( 거의 사용 안함 )


5)  CardLayout :카드식으로 지정  ( 거의 사용 안함 )


6) 사용자가 직접지정


Checkbox 


생성자 

Checkbox(String label)

Checkbox(String label, boolean state)

Checkbox(String label, boolean state, CheckboxGroup group)


label : 문자열 

state : 값 선택 여부 ( true /false )

group : 체크박을 그룹에 포함하고자 할때 사용 


메서드 

String getLabel() => 체크박스 라벨을 리턴 

void setLabel(String label) => 체크박스에 라벨을 설정 


boolean getState() => 체크박스 상태을 리턴하고 

void setState(boolean state) => 체크박스에 상태을 설정한다 


CheckboxGroup getCheckboxGroup() => 현재 체크박스의 그룹 클래스 객체를 리턴하고 

void setCheckboxGroup(CheckboxGroup group) => 체크박스에 그룹 객체를 설정 해준다  



Choice 메서드 


int countItems() : 항목 갯수 반환 

String getItem(int index) : index 위치의 문자열 반환 

void addItem(String item) : 항목 추가


String getSelectedItem() :  선택된 항목을 문자열로 반환 

int getSelectedIndex() : 선택한 항목의 index 반환 


void select(int index) : index 번째 항목 선택

void select(String str) : str 항목 선택


List 메서드

void addItem(String item ) :  item 추가

void add(String item ) :   item 추가


void add(String item , int index) : index 위치에 item 추가 


int getItemCount() : 리스트 항목 갯수 리턴 


String getItem(int index) : index 위치의 항목 반환 

String [] getItems() : 모든 항목 리턴 


int getSelectedIndex() : 선택된 항목의 index 위치 반환 

int[] getSelectedIndexs() : 다중 선택 했으때 , 선택항목들의 index 들을반환 


String getSelectedItem() : 선택 항목의 문자열 반환 

String [] getSeletedItems() : 다중 선택했으때 , 문자열들을 반한 



void remove(int pos) : pos 위치의 항복 제거 

void removeAll() : 모든 항목 제거 


List 생성자


List()

List(int  rows)

List( int rows , boolean multimode)


rows : 행 갯수 만큼 item 을 보이조록 하며,

multimode 가 true 이면 다중 선택 

                    false 이면 단일 선택 


<끝>

Posted by 홍이홍이
,

 

WindowEvent  윈도우 활성화, 비활성화 , 아이콘화, 비아이콘화, 닫기 

MouseEvent   마우스버튼 클릭 , 드래그, Move , 초점이 영역으로 들어올 때/나갈 때

KeyEvent   키보드를 누를 때/손을 떼었을 때

ActionEvent  버튼,리스트에서 항목을 더블클릭,메뉴선택, 텍스트필드에서 엔터칠 때

ItemEvent  체크박스, 리스트 , 메뉴에서 항목 선택/해제될 때

TextEvent  TextField 나 TextArea 에 값을 입력할 때

AdjustmentEvent  스크롤바를 움직일 때

<끝>

'Web Programming > Java' 카테고리의 다른 글

Java(java) Dialog(대화상자)  (0) 2018.01.20
Java(java) Layout(레이아웃)  (0) 2018.01.20
Java(자바) awt  (0) 2018.01.20
Java(자바) 인터페이스와 추상클래스  (0) 2018.01.20
Java(자바) 메서드(metod)  (0) 2018.01.20
Posted by 홍이홍이
,

awt (Abstract Window toolkit) 패키지는 여러 컴퓨터의 플랫폼(platform)에서

공통적으로 사용할 수 있는 GUI(Graphics User Interface) 컴포넌트를 제공합니다 


컴포넌트(구성요소)는 프로그램을 하는 tool(도구) 이다 

Button, TextField , Label 등을 말함 


자바빈도 컴포넌트이다 



창 과  프레임 


창종료 3 가지 방법


1. 인터페이스 상속하여 창 종료하기


2. inner 클래스 사용하여 창종료하기


3. 무명 inner 클래스 사용하여 창 종료하기 


[ 이벤트 처리 하려면 ]


1. 상속을 받는다 ( 클래스나 인터페이스를)


2. 이벤트 등록을 한다 


3. 그에 해당하는 메서드 오버라이딩을 한다 


---------------------------------------------------------

예를 들어 

---------------------------------------------------------

class test extends Frame implements WindowListener

{

  생성자()

 {

     addWindowListener(this);// 이벤트 등록

 }

   // 오버라이딩 

   public void windowclosing(WindowEvent we)

   {

       System.exit(0); 

   }

}

---------------------------------------------------------


[ 창크기 ]

1. setSize( w, h) // 크기     w=>width   h=height

2. setBounds(x,y, w, h)  // 위치와 크기 

3  pack() /// 기본크기  ( 컴포넌트가 있는 만큼의 크기 )



[ 창표시 ]

1 . show ()   :  과거 메서드( 경고 나옴)

2 . setVisible(true)  : 창표시 

     setVisible( false) : 창을 안보이게 한다 



dispose()   : 리소스 반환  ( 생략해도 된다 )

System.exit(0)  : 창 종료 ( 프로그램 종료)


System.exit(0)    : 은 정상 종료

System.exit(1)   : 은 비정상 종료 나타낼때 ( Exception 나올때 )


예를 들어 예외처리할때 catch절에 에러문구가 발생할 경우 System.exit(1) 라고 해 놓으면

정상 종료와 구분되게 하기 위해서 이다 

그렇다고 해서 System.exit(0) 으로 쓰면 안된다는 것은 아니다 


창종료 실습 

마우스이벤트  실습

키 이벤트 실습 


keyPressed(KeyEvent k)  : 키보드 위치상의 값으로 처리  F1  F2  ---F12   Shift  Ctrl    A=>65  a=>65

keyTyped(KeyEvent k) : 아스키 코드값으로 처리 A=65 a=90 ( F1  F2  ---F12 Shift Ctrl 이들은 처리 못함 )

keyReleased(KeyEvent k)  : 키보드에서 손을 떼었을때


<끝>

Posted by 홍이홍이
,

인터페이스와 추상클래스


- 인터페이스는 추상클래스의 일종이다

- 인터페이스 내의 모든 메서드는 내용이 없는 추상 메서드 이다

- 추상 클래스는 일부 내용 있는 메서드도 있고 , 내용 없는 추상 메서드도 있다 

- 인터페이스의 메서드는 항상 접근제한자가 public 이다.(생략 하더라도 public 이다)

- 인터페이스의 필드는 항상 final static(상수) 으로 상수만이 허용된다

  (final static 생략해도 final static 이다)

  ex)  final static int MAX=100;// 변수를 상수화, 이때 MAX변수값 변경 못함 

- 추상클래스는 추상메서드가 하나 이상 존재해야 한다. ( 예 : Graphics )

- 추상클래스는 일반메서드와 추상 메서드가 함께 있는 경우이다.

- 생성자 , static 메서드() , paivate 메서드()는 추상화 될수 없다 (SCJP 시험) 


List list = new ArrayList(); //상위 클래스 변수로 하위 객체 처리

List     ß  ArrayList() 상속관계

인터페이스 ß 클래스

 

- final 필드 :변수를 상수화 ( 값 변경 불가 )
- final 메서드는 : 재정의 불가능
- final 클래스는 : 확장(상속) 불가능
- final 클래스의 모든 메서드는 final를 명시하지 않아도 
  묵시적으로 final로 인식하게된다 
- 추상클래스는 객체 생성할 수 없다  ( 예 : Graphics )
  왜. 호출될 메서드가 구현 되지 않은 것일 수도 있기 때문에 (추상메서드)

<끝>


'Web Programming > Java' 카테고리의 다른 글

Java(자바) 이벤트 종류와 Interface(인터페이스)  (0) 2018.01.20
Java(자바) awt  (0) 2018.01.20
Java(자바) 메서드(metod)  (0) 2018.01.20
Java(자바) 배열(Array)  (0) 2018.01.20
Java(자바) 제어문  (0) 2018.01.20
Posted by 홍이홍이
,

객체지향 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 으로 선언된 필드는 모든 클래스 객체를 통틀어  하나만 존재해야한다 

  이들 모든 객체가 공유하게 된다 


------------------------------------------------


<끝>

'Web Programming > Java' 카테고리의 다른 글

Java(자바) awt  (0) 2018.01.20
Java(자바) 인터페이스와 추상클래스  (0) 2018.01.20
Java(자바) 배열(Array)  (0) 2018.01.20
Java(자바) 제어문  (0) 2018.01.20
Java(자바) 명령줄 인수  (0) 2018.01.20
Posted by 홍이홍이
,