2016년 8월 20일 토요일

그림으로 배우는 JAVA PROGRAMMING BASIC


Java Programming Basic

재미있게 배워보는 Java 언어 기초의 모든 것, 그림으로 배우는

  • 목 차



Lesson 01. 시작하기
이 장에서는 Java 언어를 사용하여 프로그램을 작성하는 방법을 학습합니다. Java 언어의 학습을 시작한지 얼마 안된 무렵은 생소한 프로그래밍 단어에 고생할지도 모릅니다. 그러나 이 장에서 다루는 키워드를 이해하게 되면, Java 언어의 이해도 편해질 것입니다. 하나씩 차근차근 나의 것으로 만들어보도록 합시다.
Lesson 02. Java의 기본
이전 장에서는 Java 코드를 입력한 후, 컴파일러와 인터프리터를 사용하여 프로그램을 실행시키는 방법을 배웠습니다. 그럼 앞으로 우리는 어떤 코드를 입력하면 좋을까요? 코드를 작성하여 프로그램을 만들기 위해선 Java 문법 규칙을 알아야 합니다. 이 장에서는 기본적인 Java 문법을 배워보도록 하겠습니다.
Lesson 03. 변수
제 3장에서는 문자나 숫자를 화면에 출력하는 방법을 배웠습니다. 문자나 숫자는 프로그래밍을 시작한지 얼마 되지 않은 분들에게도 그다지 위화감 없는 주제였으리라 생각합니다. 이 장에서는 드디어 프로그래밍 언어로서의 Java의 기능을 배우게 됩니다. 먼저, 가장 기본적인‘변수’에 대해 살펴봅시다.
Lesson 04. 식과 연산자
컴퓨터는 다양한 일을 할 수 있습니다. 이 때 필요한 기능이‘연산’입니다. Java 프로그램을 만들 때에도 연산은 빼 놓을 수 없는 기능 중 하나입니다. Java에서는 간단하게 연산을 수행할 수 있도록‘연산자’라는 기능을 제공합니다. 이 장에서는 다양한 연산자의 사용 방법을 배웁니다.
Lesson 05. 경우에 따른 처리
지금까지 작성했던 코드에서 각 문장들은 한 번에 하나씩 처리되고 있었습니다. 그러나 더 복잡한 처리를 하고 싶은 경우, 순차적으로 문장을 처리하는 것만으로는 부족할 수 있습니다. Java에는 여러 문장을 모아서 코드의 흐름을 제어하는 방법이 있습니다. 이 장에서는 특정 상황에 맞추어 코드의 흐름을 제어하는 문장을 배웁니다.
Lesson 06. 여러 번 반복하기
제 5장에서는 특정 상황에 맞추어 코드의 흐름을 제어하는 문장을 배웠습니다. Java에는 그 외에도 문장을 컨트롤하는 기능이 포함되어 있습니다. 이 기능은 ‘반복 문(루프 문)’이라고 합니다. 반복문을 사용하면 동일한 작업을 여러 번 반복할 수 있습니다. 이 장에서는 반복문에 대해 배웁니다.
Lesson 07. 배열
제 3장에서는 변수를 사용하여 특정 값을 저장하는 방법에 대해 배웠습니다. Java에는 이 외에도 동일한 형의 여러 값을 함께 저장하는‘배열’이라는 기능이 있습니다. 배열을 사용하면 많은 데이터를 처리하는 복잡한 코드를 깔끔하게 작성할 수 있습니다. 이 장에서는 배열의 원리에 대해 배워 보겠습니다.
Lesson 08. 클래스의 기본
지금까지 변수·배열 등 다양한 Java의 기능에 대해 배워 보았습니다. 이러한 기능들은 예로부터 다양한 프로그래밍 언어가 지원하고 있었습니다. 그러나 프로그램이 복잡해짐에 따라, 보다 효율적으로 프로그램을 작성하는 방법이 필요하게 되었습니다. 그러한 필요에 따라 새롭게 등장한 기능이 ‘클래스’입니다. 이 장에서는 클래스의 기본을 배웁니다.
Lesson 09. 클래스의 기능
8장에서는 클래스의 기본에 대해 학습했습니다. 그러나 클래스의 강력한 기능은 이 뿐만이 아닙니다. 견고한 프로그램의 작성을 돕기 위하여 클래스에는 다양한 기능이 준비되어 있습니다. 이 장에서는 클래스의 또 다른 강력한 기능에 대해 살펴봅니다.
Lesson 10. 클래스 이용
지금까지는 클래스와 그 강력한 기능을 확인하였습니다. 이 장에서는 클래스를 실제로 활용하는 방법을 학습하겠습니다. 클래스를 활용하면 실용적인 프로그램을 만들 수 있습니다. 이 장에서는 다양하게 변화하는 프로그램을 만들어 보겠습니다.
Lesson 11. 새로운 클래스
우리들은 8장에서 10장에 걸쳐 클래스의 다양한 기능을 학습했습니다. Java는 이미 설계된 클래스를 활용하여 새로운 클래스를 효율적으로 만들 수 있도록 지원합니다. 기존의 클래스를 이용하여 프로그램을 효율적으로 만들 수 있다는 것은 Java의 큰 장점입니다. 이 장에서는 새로운 클래스를 만드는 방법을 배워 보겠습니다.
Lesson 12. 인터페이스
이 장에서는 특수한 클래스에 대해 배워 보겠습니다. 이 장에서 배운 지식을 활용하면 클래스를 이용한 일관된 프로그래밍이 가능해집니다. 여기에서는 ‘추상 클래스’와‘인터페이스’라는 새로운 지식을 배워봅니다.
Lesson 13. 대규모 프로그램의 작성
지금까지 우리들은 소규모 프로그램을 여러 개 만들었습니다. 그러나 프로그램의 규모가 커지면 커질수록 코드에서는 더 많은 클래스를 다루어야 할 것입니다. 이 장에서는 큰 프로그램의 작성에 필요한 지식을 배웁니다.
Lesson 14. 예외와 입출력 처리
프로그램 실행 시에는 다양한 에러가 발생할 수 있습니다. Java는 프로그램 실행 중에 발생하는 오류에 대응하기 위한 ‘예외 처리’ 메커니즘을 제공합니다. 이 장에서는 이 예외 처리에 대해 배웁니다. 또한, 데이터의 읽기 및 쓰기를 위한‘입출력 처리’에 대해서도 학습해 보겠습니다.
Lesson 15. 스레드
지금까지 우리들이 작성한 프로그램은 그 수행 과정을 하나의 흐름으로 보고 추적할 수 있었습니다. Java는 이러한 처리 흐름을 코드에서 여러 개 만들 수 있도록 지원합니다. 이 장에서는, 처리의 흐름이기도 한 스레드를 여러 개 운영하는 방법을 배워 보겠습니다.
Lesson 16. 애플릿
Java를 사용해서‘애플릿’이라는 작은 프로그램을 만들 수 있습니다. 애플릿은 웹 브라우저 및 기타 환경에서 동작하는 그래픽컬한 프로그램입니다. 이 장에서는‘애플릿의 작성 순서’에 대해 학습해 보도록 하겠습니다.
목차 출처 : 영진닷컴블로그

  • 소개
그림으로 배우는 시리즈는 워낙 다양하게 준비가 되어있다.
물론 굉장한 베스트 시리즈는 아니지만 기본은 하는 시리즈는 아닐까 생각이 든다.
일단 번역서이지만 그렇게 거슬리거나 번역이나 신경쓰이는 오탈자는 딱히
기억에 나지 않는다. Mana Takahashi라는 일본의 저자가 쓴 책이며
페이지수는 551페이지이지만 본문의 글씨들이 큰 편이고 책도 굉자히 작다.
또한 그림이 많아 술술 넘어갈수있으니 페이지의 압박은 없을 수 있다.


  • 입문 || 초보용으로는 최고!

물론 이 책은 꾸준히 다 보거나 몇회 이상 정독한 것은 아니다.
하지만 다양한 그림으로 거부감없이 접근할 수 있었으며 확실히 그림의 영향으로
이해에 도움을 주었다. 글씨도 굉장히 크고 책도 작아서 부담을 느낄 수 없다.
특히 입문시기에는 막상 독학을 시작하려고 산 책에 시련을 겪는 경우가 많은 데
가볍게 시작할 수 있는 자신감을 기를 수 있다.

  • 모자란 깊이
입문 또는 초보용으로는 굉장히 뛰어난 반면에 하나하나 내용의 깊이나 설명.
전체적인 Java에 대한 깊이는 떨어진다. 나는 Java를 무조건 한 권으로 마무리 해버리겠다.
하시는 분들에게는 어울리지 않고 더욱 더 나아간 공부는 인터넷을 통하여
습득을 하던가 해야한다.

"책으로 Java 공부를 해야겠는 데 거부감이 드시는 분들에게 입문용으로 추천해드립니다"

2016년 8월 19일 금요일

22day / SE / Thread


  • Thread :  프로세스 내의 세부적 실행 단위 
참고) 사전적 의미로는 실 (여러 개의 실이 모여 옷감을 구성)
  1. process : 현재 실행중인 프로그램 
  2. multi-processing : 다수의 프로세스가 실행 
  3. multi-threading : 다수의 스레드가 실행 

  • ex) 동영상 플레이어 실행 - 프로세스 
  1. 영상 스레드 
  2. 음향 스레드 멀티스레딩되어야 한다 
  3. 자막 스레드 

  • ex) 채팅 클라이언트 실행 - 프로세스 
  1. 서버로부터 정보를 입력받는 스레드   멀티스레딩되어야 한다  
  2. 서버로 정보를 전송하는 스레드 

  • Thread 생성방법 
  1. extends Thread
  2. implements Runnable

  • Thread 제어 
  1.    start() : 스레드를 실행가능상태로 보낸다 
  2.   실행가능상태 -> 스레드 스케줄링을 기다리는 상태 
  3.    run() : 스레드의 실행 행위를 정의 
  4.                  스레드 스케줄링이 되면 run() 메서드가 실행된다


  • Thread 스케줄링 방식

    : 시분할 방식과 우선순위 방식에서 자바는 우선순위방식을 채택
      자바 스레드의 우선순위는 1 ~ 10
      가장 낮은 우선순위는 1 , 가장 높은 우선순위는 10이다
      우선순위를 별도로 명시하지 않을 경우에는 5가 기본으로 설정된다
      Thread 의 setPriority(우선순위) , getPriority() 를 활용하면 된다
      우선순위를 부여하면 스케줄링 가능성이 높아지는 것이지
      반드시 우선순위가 높다해서 먼저 실행한다는 보장은 없다
   

2016년 8월 18일 목요일

21day / SE / Serializable

http://www.javatpoint.com
  • Serializable 객체 직렬화 

객체 직렬화란 객체의 정보를 바이트 단위의 데이터로 변환해
외부(파일 또는 네크웍)로 전송할 수 있는 상태로 만드는 것을 의미한다

객체 직렬화를 위해서는 해당 클래스가 반드시 implements Serializable 처리되어야 한다 
즉 Serializable interface 계층구조 하에 있어야 객체 직렬화가 지원된다는 것을 의미한다

2016년 8월 17일 수요일

20day / SE / IO

http://www.javatpoint.com
http://www.javatpoint.com
  • IO : 입력과 출력  
Stream (스트림) : 흐름 ( 데이터의 연속적인 흐름 ) 입 출력을 위한 클래스를 통칭

  • IO 의 주요 추상클래스
/1byte2byte
입력InputStreamReader
출력OutputStreamWriter

  1. Node Stream 계열 ( 기본스트림 ) : 직접 장치에 연결되는 스트림
  2. Processing Stream 계열 ( 부가스트림 ) : 다른 스트림에 연결되어 기능을 부가하기 위한 스트림 
http://docstore.mik.ua

     ex)  FileWriter 생성 : 파일에 연결되는 노드 스트림
           PrintWriter 생성 : 기능 부가를 위한 프로세스 스트림
         
           관계 ( relationship )
           PrintWriter has a FileWriter
     
ex)

FileWriter fw = new FileWriter(path);
PrintWriter pw = new PrintWriter(fw); // fw를 생성자에 전달 
//pw 로 제어한다 
pw.println();
pw.close(); 
cs
         

  • 출력시 사용되는 주요 메서드 
  1. println();  한 라인씩 출력한다 
  2. flush(); 버퍼에 있는 데이터를 모두 출력한다 
  3. close(); 연결된 스트림을 닫아준다->내부적으로 flush 를 수행한다 

2016년 8월 16일 화요일

2016년 8월 12일 금요일

2016년 8월 11일 목요일

17Day / SE / Exception-handling


http://www.slideshare.net/ssuser8e9f37/exceptions-in-java-13584393
  • Exception Handling ( 예외 처리 )

  : 프로그램 실행시 발생할 수 있는 예외에 대한 처리 (대처방안을 실행)
    Exception은 jvm이 프로그램을 실행할 때
    예외 상황이 발생하면  해당 Exception 객체를 생성해
    전달하고 프로그램은 비정상 종료되는 특징이 있다
    -> 예외처리(Exception handling)를 통해 예외적 상황에 대한 적절한 대처방안을 실행
        프로그램을 계속 정상수행하도록 한다
     
http://kiowok.org

Throwable 의 하위(or 자식 or subclass) 클래스는 Error 와 Exception 이 있다 
    Error 와 RuntimeException계열의 Exception :
    unchecked -> 컴파일 타임에서 확인 불가
참고) RuntimeException 계열의 예 :
NullPointerException , IndexOutOfBoundsException , ClassCastException 등..  
Exception 중 RuntimeException 을 제외한
모든 Exception : checked -> 컴파일 타임에서 확인 가능  
     
생활코딩
  • Exception 관련 주요 키워드 ( try , catch , finally, throws, throw ) 
- try,catch
   try : 예외(Exception) 발생 예상 지점에 대한 영역 지정

- catch : 예외 발생시 처리 ( 예외 발생에 대한 대처방안 실행 )
 
- finally : 예외 발생 여부와 관계없이 항상 실행  

- throws : 예외 발생하면 예외를 호출한 곳으로 던진다

- throw : 예외(Exception)를 발생시킨다

http://cdn.crunchify.com

http://aventalearning.com
  • 사용자 정의 예외 ( User Define Exception ) 
  사용자 정의 Exception class는 extends Exception 으로 정의한다
  ex)
1
2
3
4
5
6
public class TelNotFoundException extends Exception{
public TelNotFoundException(){}
    public TelNotFoundException(String message){
        super(message);
    }
}        
cs

2016년 8월 10일 수요일

16day / SE / Map

http://codingbat.com
  • Iterator Interface : 반복자 -> 요소를 반복해서 열거하기 위한 표준 
컬렉션 계열의 모든 구현체의 요소를 반복 열거하기 위한 표준을 제공
대표적인 메서드는
hasNext() : boolean  다음 요소가 존재하면 true 아니면 false
next() : Object 다음 요소를 반환한다
ex)
1
2
3
while(iterator.hasNext()){
    System.out.println(iterator.next());
}
cs
   

  • java.util.Map Interface
   위 인터페이스를 구현한 대표적인 클래스
   HashMap , TreeMap(정렬) , LinkedHashMap(순서보장)
   
   Map 은 key와 value 쌍으로 저장된다
   key로 검색하여 value를 반환받을 수 있다
   ( 빠른 검색이 가능 )
   key는 유일해야 한다 ( 내부적으로 Set으로 저장된다 )    
   
   Stack : 선입후출 (LIFO: last in , first out)
   Queue :선입선출(FIFO : first in , first out)  


  • String과 StringBuilder(or StringBuffer) 비교 
http://www.programcreek.com
  String : 불변 

   같은 문자열을 Literal pool 영역에 한번 저장하여
   여러 변수에서 공유해서 사용한다
   문자열 변경시 자체 변경이 아니라 새로 생성된다
   
   StringBuilder(or StringBuffer) : 가변
   문자열 변경시 자체가 변경되기 때문에 변경이 많을 경우 적합

   StringBuilder와 StringBuffer의 차이점은 thread-safe 여부이다 
   StringBuffer는 synchronized 동기화 처리가 되어 있어서 멀티스레딩시 안전하다

2016년 8월 9일 화요일

15day / SE / ArrayList

http://www.trustingeeks.com

  • ArrayList : index로 요소를 관리 

대표적인 메서드는 add() , remove() , get() , set()

  • Generic : Collection 계열에서 사용되는 기술 

미리 타입을 지정하여 해당 컬렉션 내의 요소의 종류를 지정하여
객체 캐스팅 절차를 감소시킬 수 있다.

런타임시(실행시) 발생할 수 있는 java.lang.ClassCastException 을 사전에 예방할 수 있다
ex)

ArrayList<Product> cart = new ArrayList<Product>();
cs
위와 같이 Generic 으로 선언하면 Product 계열의 객체만 cart에 추가 될 수 있다

2016년 8월 8일 월요일

14day / SE / Interface

http://www.javatpoint.com
Interface :  다양한 계층구조 형성을 통한 다형성 지원에 목적이 있다 

다중 상속의 장점을 취득한다
(자바는 단일 상속을 채택. 다중 상속의 장점은 Interface를 이용해 처리한다)
상속의 장점은 부모로부터 재사용할 수 있는 멤버를 물려받고 ,
계층구조 형성을 통한 다형성 적용에 있다
Interface는 다양한 계층구조 형성을 통한 다형성 적용을 가능하게 한다 ( 재사용성 x )                                
                               
특징 :  java Interface는 abstract method와 public static final 상수로 구성된다
         interface의 하위 클래스는 extends 가 아닌 implements key를 이용한다
         하위클래스는 상위 인터페이스에서 명시한
         추상 메서드를 반드시 implements 해야 한다  
         인터페이스끼리 상속이 가능하다

http://www.javatpoint.com
  • java.util.Collection Interface 

     자료구조체의 최상위 인터페이스                            

  • java.util.Set Interface 
      Collection Interface의 하위 인터페이스로서
      이 인터페이스를 구현하는 구현체는
      중복을 허용하지 않는다
   

  1. HashSet class : 중복허용 x 
  2. TreeSet class : 중복허용x , 정렬기능 내장 
  3. LinkedHashSet class : 중복허용x , 순서       


  • java.util.List Interface 
Collection Interface의 하위 인터페이스이다
이 인터페이스를 구현하는 구현체는순번으로 요소를 관리한다

2016년 8월 5일 금요일

13day / SE / Static, Abstract


  • static :  class loading시 메모리 적재된다 
  참고) 자바 프로그램 실행
         :   class loading -> 코드검증 -> 실행(runtime)
             static 적재                           객체 생성
           
http://www.whatprogramming.com

static 멤버 ( 변수 및 메서드 )는 별도의 객체 생성 필요없다 
   ex)
1
2
3
4
class Person{
       static void test(){}
}   
Person.test(); <- 사용가능
cs

  • final 
  1. final  상수 : 재할당 불가  
  2. final  메서드 : 오버라이딩 불가 
  3. final  클래스 : 상속 불가      

     
http://www.itrelease.com

  • Abstract
  :  메서드와 클래스에 선언되는 자바 키워드
   

  • abstract method (추상 메서드 ) 
     -> 구현부가 없다
     -> 자식 클래스에서는 반드시 상속받는 부모 클래스의 추상메서드를 구현해야 한다
     -> 추상메서드는 하위 클래스에게 기능 구현을 강제하며 이는 시스템 표준화에 기여
     ex)

public abstract void study();
cs
   
/staticnon-static( object or instance )
메모리영역method area (or class area)heap
멤버클래스멤버객체멤버
적재시점class loading시 단 한번 적재객체 생성시 별도 적재
  • abstract class (추상 클래스)
  1. 직접 객체화 될 수 없다 
  2. 자식클래스의 생성자 내 super() 를 통해 객체 생성
  3. abstract class는 자식에게 멤버를 제공할 수 있다 
https://sites.google.com/site/sureshdevang/design-pattern-example

  • Template Method Design Pattern 
    : 부모 클래스에서 알고리즘의 뼈대를 구성하고
     자식 클래스에서 알고리즘의 일부만 구현케 하는 설계패턴

2016년 8월 4일 목요일

12day / SE / Project Review


프로젝트 코드 리뷰

  • 인스턴스 변수의 역할 : personArray 와 index
personArray = 배열의 역할을 하는 변수
배열의 정보와 값을 담거나 조건반복문에서 多사용
index = 실질적인 학생수 역할을 하는 변수
학생추가시 증가 / 중복확인 / 정원초과 체크

  • 생성자의 역할 : SchoolService 생성자 -> 배열이 길이를 받아 배열을 초기화
Student, Teacher, Employee 생성자 -> super 사용 (tel / name / address)
  • Inheritance(상속)의 장점을 schoolproject의 사례에서 설명

  • 상속의 활용으로 인하여 (tel / name / address)의 중복된 변수를 줄일수 있었으며
    부모생성자가 대표로 정보를 받는 역할을 하여 생성자와 메서드를 줄이고
    효율적인 코드를 생성할 수 있었다
  • Polymorphism(다형성)의 장점을 schoolproject이 사례에서 설명
부모타입을 이용하여 다양한 서브클래스들을 한번에 주고 받고 하였다.
결국에는 상속의 활용과 동일하다

2016년 8월 3일 수요일

11day / SE / Project


학교 구성원 관리 시스템 만들기

  • 구성원

  1. 학생 -> 전화번호, 이름 , 주소 , 학번 정보
  2. 교사 -> 전화번호, 이름 , 주소 , 과목 정보
  3. 직원 ->전화번호, 이름 , 주소, 부서 정보
  • 구현 기능
  1. 이 시스템을 사용하는 사용자는 학교 구성원을 한명씩 추가할 수 있어야 한다
  2. 전체 구성원 정보를 화면에 출력


  • 전화번호를 키 값으로

  1. 구성원의 상세정보를 반환
  2. 구성원 정보를 변경
  3. 구성원을 삭제



  • 제한 기능

  1. 총 구성원 수는 100명으로 제한한다
  2. 전화번호는 중복 금지


  • 구현 기술

  1. Array[]

2016년 8월 2일 화요일

10DAY / SE / Polymorphism


http://www.javatpoint.com
  • Polymorphism(다형성)

  "One Interface, Multiple Implements"
 하나의 메세지 방식으로 다양한 객체들이 각자의 방식으로 동작하는 성질

www.c-sharpcorner.com
  • Polymorphism 적용 장점 

   : 사용자 측에서는 하나의 메세지 방식만 알면 다양한 구현체들을 실행할 수 있다
     ex) 재생버튼 - Mp3플레이어, 동영상플레이어 ,
                        LP플레이어, 이클립스 등..

  • Polymorphism 적용원리 
ex)

1
2
3
4
5
6
class Animal{
class Person extends Animal{
}
Animal a = new Person();
cs
    자식 객체를 부모 타입의 변수로 참조할 수 있다
    만약 상속관계라면 compile error
ex)

Car c = new Person();  compile error 
cs
   

    http://www.cs.utexas.edu
  • Object casting 

부모 타입의 변수로 자식객체 참조시에는 부모로부터
상속받은 멤버(변수,메서드)와 오버라이딩된 메서드는 바로 접근 가능하다

하지만 자식의 독자적인 멤버(변수,메서드)는 별도의 절차가 필요하다 
부모 타입의 변수로 참조되므로 변수를 자식타입으로 형변환(Casting)하는 절차가 필요하다
ex)
1
2
3
Animal a = new Person();
    a.study(); compile error
    ((Person)a).study(); Object casting 
cs
     

http://www.java67.com
  • instanceof 연산자 

 ex) 객체 타입을 비교하는 연산자 is a 관계가 성립되면 true를 반환한다
1
2
3
4
5
6
class Animal{ }
class Person extends Animal{ }
    
    Person p = new Person();   
    System.out.println(p instanceof Person); true 
    System.out.println(p instanceof Animal); true  
-> is a 관계 성립되므로 true 
cs
 


  • java.lang.Object

    자바로 구성된 모든 클래스의 부모클래스이다(super class)
    상속하지 않는 클래스는 extends Object 자동으로 처리된다
    모든 자바 객체 ->Object에 정의된 멤버를 상속받게 된다
    모든 자바 객체 -> java.lang.Object 타입으로 참조될 수 있다
ex)

Object o1 = new Dog();
Object o2 = new Airplane(); 
cs
다형성 : 부모 타입의 변수에 자식객체 참조 가능

2016년 8월 1일 월요일

9DAY / SE / Inheritance


http://programmersnight.com
  • 상속 ( Inheritance ) 의 개념 
상속이란 부모의 멤버(인스턴스변수와 메서드)를 물려받는 것을 말한다

  • 상속의 특징
자식(sub)과 부모(super) extends keyword
ex)  class Person extends Animal{ }

   is a relationship :  사람은 동물이다 (is a 관계가 성립되었다)
 
   부모 차원에서 Encapsulation 적용된 멤버(변수,메서드)는
   상속받더라도 접근할 수 없다 (Private 명시했을 때)
   ( 접근이 필요하다면 setter/getter 를 활용해야 한다 )
 
http://jitendrazaa.com

  • 접근제어자 (access modifier)
      public > protected > default > private
   
      public : 어디서나 접근 가능
      protected : 같은 패키지내에서 접근 가능
      (단 상속관계시에는 다른 팩키지에서도 접근 가능)
      default : 같은 패키지내에서 접근 가능
      private : 자신의 클래스 내에서만 접근 가능
 

  • 상속의 원리 :   super keyword 
     상속 관계를 구성하고 자식 객체를 생성하면
     부모 객체부터 생성되어 마지막에 자식 객체가 생성된다 ( heap memory 영역 )
   
     이런 것이 가능한 이유는 생성자에는 별도 명시하지 않을 경우
     컴파일시에 생성자 실행 첫라인에 super() 코드가 자동 삽입되기 때문이다.
   
     super() 는 부모 생성자를 호출하여 객체 생성되도록 한다
   
     ex)
1
2
3
4
5
6
7
8
9
 class GrandParent{}
    class Parent extends GrandParent{}
    class Child extends Parent{} 
             
    new Child() 가 실행될 경우 객체 생성순서는? 
      GrandParent -> Parent -> Child 순서로 생성된다 
             
      자동삽입될 생성자의 형태는 
      Child(){super();}
cs
 

  • 오버로딩
   :  메서드나 생성자가 동일한 이름으로 매개변수를 달리하며
      여러번 정의하는 기법 ( 다양한 매개변수로 정의 )
      -> 사용자 편의성 증대

www.studytonight.com


  • 오버라이딩(메서드)
   : 부모에서 상속받은 메서드를
     자신에 맞게 재정의(수정)하는 기법
     -> 부모 메서드와 오버라이딩하는 자식 메서드 명이
         동일해야 하고 리턴타입 , 매개변수 또한 동일해야 한다
         접근제어자는 더 좁아지면 안된다
http://javarevisited.blogspot.kr