본문 바로가기

[2016 - 2019] 학부 정리/Java

자바

1.객체지향

 필요에 의해 클래스를 만들고 사용할 때에는 셍성자를 통해 객체를 만들어서 사용 / 객체는 무한대로 생성 가능

 생성자에는 반환값이 없음, 클래슴명과 같음. 메소드와의 차이


2.클래스 실전 => 학사 관리 프로그램

 -------> ArrayList<>사용하는 방법


3.패키지 및 접근제한

 -------> 폴더 구조

 -------> 네이밍 규칙 : 대부분 회사 도메인 반대방향 (com.~~)

 -------> 접근제한의 종류 4가지 private : 같은 클래스 내부에서만 가능


4.static : 객체변수 X, 클래스 변수

 --> '공유'라는 개념, 클래스에서 객체가 만들어지기 전에 클래스에 있는 것을 공유하는 것

 --> 변수를 대문자로 많이 사용함(PI) 문법 : public static double PI; 이런식으로 사용

 --> 다른 클래스에서 객체를 생성하지 않고 클래스이름. 으로 바로 접근이 가능하다.

 --> 클래스들이 모여있는 곳은 : 데이터 영역,  객체가 모여 있는 영역 : Heap영역 --> 가비지 컬렉터가 관리(메모리 관리)

 --> 가비지컬렉터가 관리하지 않기 때문에 변수가 회수되지 않아 메모리가 상주하게 되어 느려짐.. 클래스가 많을수록 느려지는 경우

 --> 공유하도록 썼는데 변경 가능성이 있을 때 final을 사용하게 된다.


**5.상속

 --> 다른 객체의 데이터와 메소드를 상속 받을 수 있다. 변경도 가능

 --> 예시 : 4발자전거를 직접 다 만드는 것보다 2발 자전거를 아예 사와서 내가 원하는 기능을 추가한다면 시간을 단축시킨다.

 --> 다양한 객체를 하나로 묶을 수 있다(추상화 개념)

 --> 문법 : extends,  다중상속을 지원하지 않음(자바)


override : 아버지가 상속해주신 음식중에서 업그레이드 하고 싶은 음식을 다시 정의하는것 (sw강의 12-26:19) 

아버지가 가지고 있는 메소드 이름을 똑같이 쓰긴 하지만 새로운걸 정의하는 것

부모클래스의 메소드를 자식 클래스에서 재정의 하는것

밖에서 재정의 된것을 호출하게 되면 자식 클래스에 있는 메소드가 호출이 된다.


super : 부모를 찾는 키워드

재정의 했을 땐 자식클래스에서 부모클래스의 메소드를 사용할 수 없음

근데 자식클래스에서 부모 클래스의 메소드를 사용하려고 할때에 super라는 키워드를 사용하면 쓸 수 있다.

this는 내 객체에 있는 것을 찾음, super는 내 위쪽에 있는 것을 찾겠다.

자식클래스를 호출하게 되면 부모 클래스는 알아서 생성하게 된다. 


**6.추상화

추상 클래스

추상적으로 정의할테니 , 사용자는 재정의 해서 사용해라 (오버라이딩 필요하다)

재정의는 원래의 본사의 클래스엔 값이 정해져 있었는데 추상 클래스는 메뉴만 있고 가격은 알아서 책정할 수 있도록 한다.

모든 메뉴의 가격을 점주들이 알아서 강제로 할수있도록 한게 추상 클래스

메소드 선언만 해놓고 구현은 하지 않은것을 추상 클래스라고 한다,.

public abstract class className(){

    public abstract void method();

}

그러나 구현은 하진 않는다.

추상클래스는 하나이상의 추상 메소드가 필요하다.

자동으로 재정의 하도록 강제성을 부여


추상클래스를 쓸지 안쓸지는 나중에 정하는 편 -> 리팩토링

재정의를 해야만 하는곳이 있다면 추상으로 빼는 편이 좋음

15,16 강 프로그램 만들어 보면서


**7.인터페이스 17강~

규모가 좀 큰 프로젝트에서 알게됨.. 디자인 패턴이나 이런곳에서 실무에서 규모가 어느정도 커야 인터페이스의 중요성을 알게됨 그래서 알기? 이해하기가 좀 와닿지 않음


인터페이스란? 

-객체와 객체의 소통 수단

-작업명세서와 같음(이렇게 만드세요~~)

-다형성(자바에서 다형성이 가능하게 됨)

-사용법은 어렵지 않음 실무에서 쓰다보니 적용이 조금 어렵

-인터페이스에서는 무조건 추상메소드랑 상수만 존재하는데, 이때 abstract키워드는 사용하지 않는다.

-private 사용 불가함

- 객체를 부속품화 할 수 있다.

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

인터페이스 문법

- 실제 기능과 구현된 기능 없고, 추상 메소드와 상수만이 존재 한다.

- Private 안되고 상수를 만들 때 private 접근 제한자 불가

- 추상화 - 메소드는 무조건 추상 메소드만 가능

- 객체 타입 - 인터페이스는 객체가 아님, 객체 타입으로만 사용된다.

- 구현은 실행 되는 객체의 메소드에서 한다.


다형성이라는 개념:

-상속에서는

  S <- A 클래스 상속하고 있다면 A a = new A(); 이런식으로 객체를 생성하는 것이 아니라 S a = new A(); 이런식으로 타입을 상위 부모 클래 스로 해도 된다.

-인터페이스의 경우, 

//클래스가 아니므로 객체를 생성하지 않음, 객체의 타입으로만 사용된다. S a = new A();

public interface IFfunction(){

public static final PI = 10;

public void InMethod(); //추상 메소드만 존재한다. 이 인터페이스를 implements하는 클래스에서 재정의 해서 사용한다.

}


자바는 다중상속이 불가하다 C++에서 가능했지만 문제가 많아서.. 대신 인터페이스로 다중 구현, 다형성이 존재한다.

상속은 가능, 단일 상속 가능, 다중 상속 불가


18강의 : 인터페이스는 빈 인터페이스를하나 만들어 상속받게 하면 타입을 공통으로 사용할 수 있다.

예제 -> Toy 


추상클래스와 인터페이스의 공통점과 차이점

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

19강~

패턴

1. 싱글톤

 : 어떤 클래스의 인스턴스는 오직 하나임을 보장하며, 이 인스턴스에 접근할 수 있는 전역적인 접촉점을 제공하는 패턴이다(위키)


'[2016 - 2019] 학부 정리 > Java' 카테고리의 다른 글

connect by 필기  (0) 2018.01.23
필기> R  (0) 2018.01.22
청년아카데미  (0) 2018.01.18
[필기] 18.01.17  (0) 2018.01.17
[오늘필기02] jdbc - 18.01.15  (0) 2018.01.15