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. 싱글톤
: 어떤 클래스의 인스턴스는 오직 하나임을 보장하며, 이 인스턴스에 접근할 수 있는 전역적인 접촉점을 제공하는 패턴이다(위키)
'학부 정리 > 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 |