
상속
다중상속 다이아몬드 문제
인터페이스
클래스가 ‘무엇을 할 수 있다’라고 하는 기능 구현을 강제
하위 클래스의 인스턴스가 생성될 때 상위클래스의 인스턴스도 함께 생성된다.
ex) pororo 인스턴스 변수가 가르키는 heap 메모리변수
public class Driver {
public static void main(String[] args) {
Penguin pororo = new Penguin();
proro.name = "뽀로로";
pororo.showName();
pororo.showHabitat()
}
}
| :Penguin | :Animal |
|---|---|
| habitat: null | name : null |
| showHabitat() | showName() |
UML 표기에서의 접근 제한자
| + | public |
|---|---|
| - | private |
| ~ | default |
| # | protected |
protected가 자신과 상속 관계에 있는 서브 클래스만 접근 가능한것이 아닌 같은 패키지라면 접근이 가능하다.
정적멤버에 접근할 때는 객체 참조 변수명.정적멤버 형식으로 접근하기 보다는 클래스명.정적멤버 형식으로 접근하는것이 물리적 메모리 접근 과도 연관이있다.
static영역에 선언된 정적 멤버를 호출하면 한번에 호출 가능하지만, 만약 클래스명의 정적멤버변수를 호출할 경우 stack의 클래스의 인스턴스 변수를 호출 한 뒤, 정적 멤버변수를 호출하는 두번의 행위가 벌어지기 때문

기본 자료형 변수는 값을 값 자체로 판단한다.
참조 자료형 변수는 값을 주소, 즉 포인터로 판단한다.
기본 자료형 변수를 복사할때, 참조 자료형 변수를 복사할때 일어나는 일은 같다.
가지고 있는 그대로 복사할 뿐
웹브라우저가 보관하는 데이터
쿠키 생성
JSP 프로그래밍에서는 웹서버에서 쿠키를 생성해서 보낸다. 생성한 쿠키는 응답 데이터의 헤더에 저장해서 웹브라우저에 전송한다.
쿠키 저장
웹 브라우저는 응답 데이터에서 받은 쿠키를 브라우저 저장소에 보관한다.
쿠키 전송
웹 브라우저는 쿠키 요청이 있을때마다 저장했던 쿠키를 꺼내서 웹 서버에 전송한다.
서버 세션을 사용하여 클라이언트의 상태를 저장한다.
쿠키와의 차이점은 세션은 웹 브라우저가 아닌 서버에 값을 저장한다. 서버에 클라이언트의 상태를 세션을 통해 저장하므로 로그인 상태 유지 목적으로 사용한다.
웹서버에서 브라우저에게 세션 id를 제공하여 브라우저 연결마다 어떤 세션을 사용할지 알려준다.
key값에 어떤 함수를 할당하는가
보통 람다식 사용
sample = [[0,4],[0,2],[1,3],[2,1]]
def second(x):
return x[1]
print(sorted(sample, key=second))
print(sorted(sample, key=lambda x:x[1]))
functools라이브러리의 cmp_to_key()사용
from functools import cmp_to_key
students = [
('kim','B+',18),
('lee','A+',21),
('jeong', 'A',18)
]
def new_sort(n1,n2):
if n1[2] > n2[2] : return 1
elif n1[2] == n2[2] : return 0
else: return -1
print(sorted(students, key=cmp_to_key(new_sort)))
[참고]