Java/Basic

[Java] 초보 가이드 -3

Jeong Jeon
반응형

10). Hirerarchy(계층구조)

OOP(object oriented Programming)

특징  : inheritance(상속성) : 상속관계에 있는 두 클래스사이 부모클래스가 자식클래스에게 속성을 물려줌

코드의 중복을 없애고 코드의 재사용을 위함 (부모의 특성을 받아 구체화시킴)

  • encapsulation(캡슐화/은닉화) : 외부에 노출할 필요가 없는 정보들을 은닉
    • 정보 ? ->data -> Vo / Dto -> bean
  •  polymorphism(다형성) : 같은형태이지만 다른기능을 하는것.(오버라이딩)
    • 관계는 is a관계(포함: extends) / has a관계(사용함 : association)

[상속성]

  • Extends : 일반 Class를 확장할때 사용(Class : 일반클래스/Interface/EnumClass)

-> 모두 멤버가 구성되어있는 Class

-> 멤버중에 추상화(Abstract : {}이 없는 메소드) class

-> 실선 화살표

  • implements : 메모리의 최적화, 소스의 은닉(Override)

-> Interface Class를 확장할때 사용

-> 점선 화살표

** 확장을 하는 이유 !! : 확장하고자 하는 클래스의 특징을 물려받기 위해 사용

** Override : Extends/implements 가 되어있는 전제하에 부모의 모든 멤버메소드를 자식에서 재정의해서 사용

외부에서 부모의 메소드를 실행 시켜도 자식의 메소드가 실행됨

  • factory design pattern : 위 두개를 가지고 만드는 것 (물-수증기-얼음)

[캡슐화]

  • 접근제한자

  • getter/setter

 

[Static 관련 실행내용 확인]

1). 연산과정을 하는 Vo Class하나를 만든다.

2). static 메서드를 하나 만든다.

3). Main Class내에서 Vo Class를 3번 호출한다. new Vo();  x3    => 결과 : 1

4). public Vo() 메서드를 만든다.

5). Main Class내에서 Vo Class를 3번 호출한다. new Vo(); x3 => 결과 : 3

이유 !!! : Static은 실행될때 한버만 호출되기 때문에 결과가 1이 나온다.

 

**선언 : 입력하고자 하는 공간을 설정

  • 기본타입 선언 int i;

선언&입력 int i=10;

  • 객체생성(instance화)

new A(); // instance class를 메모리에 할당하는 작업(new)

A a = new A();

 

11). Static

  • 생성되는 곳 : Method Area

  • 메모리에 한번 할당/프로그램이 종료될때 환원됨

  • 고정주소와 고정 HashCode를 갖고있다.(변화하는 주소가 아니기때문에 호출시 포함되어있는 class명.~~으로 사용)

 

 

12).메모리구조

** null :  stack에는 선언되어있지만 heap과 연결되어있지 않은 상태

-> 메모리 정리하면 - heap에 있던 ref01이 지워지는것

-> new 해서 객체를 생성하게 되면 Heap영역에 객체가 생성되어 A a에서 Stack에있는 a와 연결이 된다!!!!

** Garbage Collection (Heap영역의 특징) : Heap영역과 연결이 끊어진상태인 데이터(heap)만 담긴다.(사용하지 않는 데이터)

 

 

If). int a =10; int b=a;를 했을때 stack에서 값복사가 일어나서 b=10이되고,

그뒤에 a=30;을 넣게되면 a=30, b=10이라는 값으로 정해진다. 이것을Pass by value 라고 한다.

 

13). 반환타입

반환타입이 될수있는것 : 기본타입, 참조타입, 유저클래스 타입

 

<리턴 타입이 있는 메서드 작성하는법>

1. 반환에 되는 타입을 고려한다(커피) 커피 : 타입

2. 메소드를 선언한다

3. 반환 타입과 같은 타입으로 변수를 선언한다. 필요시 초기값을 입력한다.

4. return 예약어를 작성하고 선언한 변수를 작성한다.

5. 연산을 작성한다.

 

public 커피 coffeeMachine(int n){

	커피 c = null;

	if(n==1){

		c= new 커피("아아");

	}

	return c;

}

[Return 연습]

return 값이 있는 것과 없는 것의 비교

 

14). main(String[]  args)

 

String[]: parameter : 매개체/전달 변수 (값을 전달하는 매개)

args : Arguments : 값(value)

호출 : 다른 class(Main class)에서 실행하거나 객체생성을 하는것

 

15). 참조타입

[Shallow Copy]

얕은 복사-> Stack영역에 변수가 생성되지만 Heap영역에는 같은 ref와 has를 찾아간다.

[Deep Copy]

깊은 복사-> Heap영역에 같은 구조의 객체껍데기가 복사되지만, 내용물이 재생성되서 존재하게된다.

 

 

[참조 타입]

  • pass by reference, assign by reference, call by reference

  • 값을 복사하는것이 아닌 객체를 찾아갈수 있는 위치인 주소,hashcode(heap에 생성)를 전달한다.

  • API,Array , user define Class(사용자 정의 클래스)이다.

  • 기본타입을 묶어서 새로운 타입을 만들어낸다.

  • mutable하다 -> 껍데기가 변하지 않고 내용만 변화시킨다. ->shallow copy

  • heap에 생성된다.

  • 주소와 고유값(hashcode)를 가지고 있다.

**deep Copy 방법을 활용해서 같은 class 형태이면서 같은 값을 가진 객체를 생성하여 전달

 

16). 기본타입

[기본 타입]

  • pass by value, assign by value, call by value이다

  • 값을 복사하여 전달한다.

  • 숫자(Number) , 문자(char/varchar(db=)), 날짜(Date)

  • 최소단위로 byte를 사용한다!

  • Literal이다.

  • stack에 생성된다.

  • immutable하다 한번입력되면 변하지 않는다.

 

 

 

반응형