JAVA
패키지, 클래스 패스
패키지, 클래스 패스
2022.03.31패키지 (package) 서로 관련된 클래스의 묶음 클래스는 클래스 파일(*.class), 패키지는 폴더. 하위 패키지는 하위 폴더 클래스의 실제 이름(full name)은 패키지를 포함(java.lang.String) 패키지란, 서로 관련된 클래스를 묶어 놓은 것이다. Java8 기준으로 약 4000개의 클래스가 있다. 이 많은 클래스들을 묶지 않고 관리하려면 매우 힘이 들 것이다. 이 많은 클래스들을 작은 단위로 나누어 저장하기 위한 것이 패키지이다. 소스파일을 컴파일하는 클래스가 클래스파일이 되는데, 그런것 처럼 패키지는 폴더이다. 모든 클래스는 패키지 안에 들어있어야 한다. 따라서 모든 클래스의 실제 이름(full name)은 패키지를 포함한다. ex) String의 실제 이름은 java.lang..
참조변수 super, 생성자 super()
참조변수 super, 생성자 super()
2022.03.31참조변수 super 객체 자신을 가리키는 참조변수, 인스턴스 메서드(생성자)내에만 존재 조상의 멤버를 자신의 멤버와 구별할 때 사용 참조변수 super는 객체 자신을 가리키는 참조변수이다. this와 거의 같다고 보면 된다. this도 인스턴스 메서드 내에서만 사용할 수 있다. static메서드에서는 사용 할 수 없다. this는 lv와 iv구별에 사용했다. super는 조상의 멤버와 자신의 멤버를 구별할 때 사용한다. 코드를 보면, Parent클래스가 있고, Child클래스가 있다. Child클래스는 Parent클래스의 자식이다. 그런데, Parent클래스에도 x가 있고, Child클래스에도 x가 있다. 두클래스에 x가 있는 것이 가능하다. Child객체를 만들면, 참조변수 c를 만들고 멤버가 자신의 ..
오버라이딩 (overriding)
오버라이딩 (overriding)
2022.03.30오버라이딩 (overrriding) 상속받은 조상의 메서드를 자신에 맞게 변경하는 것 오버라이딩은 정확히는 메서드 오버라이딩 이다. (override의 뜻은 동사로 '덮어쓰다') 라는 뜻이다. 오버라이딩은 상속받은 조상의 메서드를 자신에 맞게 변경하는 것이다. Point클래스, 2차원 상의 좌표를 나타내는데, x, y값을 getLocation() 메서드가 문자열로 반환한다. (위치를 반환) 이러한 getLocation()이라는 값이 있을 때, 이것을 상속 받아서 Point3D라는 클래스를 만들었다. 이것은 3차원 좌표상의 한 점을 의미한다. 그래서 int z; 가 추가되었다. 근데, 상속받은 Point클래스의 getLocation() {} 을 그냥 사용하기에는 Point3D클래스는 3차원의 점이기 떄문에..
단일 상속, Object 클래스
단일 상속, Object 클래스
2022.03.30단일 상속 (Single Inheritance) Java는 단일상속만을 허용한다. (C++은 다중상속 허용) 자바는 단일상속만 허용한다. 하나의 부모로부터만 상속받을 수 있다. 그래서 TvDVD라는 클래스를 만들 때, 2개의 조상을 상속받는 것을 허용하지 않는다. 둘중에 하나 선택을 해야한다. 하나만 가능하다. 다중 상속은 장점도 있지만 문제점이 많이 있어서 자바에서는 단일 상속만을 지원한다. 다중 상속의 문제점은 어떤 것이 있냐면, 예를 들어서 부모가 Tv, DVD 이렇게 2개일때 그 두 클래스를 상속받아서 TvDVD라는 클래스를 만들었다고 가정해보자. 만약에 Tv클래스와 DVD클래스에 각각 같은 이름의 메서드 void power() {} 가 있는데, Tv클래스의 메서드 내용은 void power() ..
클래스 간의 관계, 상속과 포함
클래스 간의 관계, 상속과 포함
2022.03.30포함 관계 포함(composite)이란? 클래스의 멤버로 참조변수를 선언하는 것 클래스들 간의 관계는 크게 상속과 포함 2가지로 나눌 수 있다. 저번시간에 상속을 공부했고, 오늘은 포함을 알아보자. 포함관계란, 클래스의 멤버로 참조변수를 선언하는 것을 말한다. 코드를 보면, 이런 것이 포함이다 Cirlce 클래스를 만들 때, 원을 표현하기 위해, 원점의 x좌표, 원점의 y좌표, 반지름 r을 멤버가 있어야 하는데, 좌측의 코드처럼 작성할 수도 있지만, 상속을 이용하여 오른쪽처럼 코드를 작성할 수 있다. 좌측코드는 Point클래승화 전혀 관계가 없다. 그러나, 오른쪽 코드는 Circle클래스와 Point클래스가 서로 포함관계에 있다. Point클래스를 Cirlce에 포함시킨 것이다. 포함은, 이처럼 클래스의..
상속
상속
2022.03.30상속 (Inheritance) 기존의 클래스로 새로운 클래스를 작성하는 것(코드의 재사용) 두 크래스를 부모와 자식으로 관계를 맺어주는 것 상속으로 클래스를 작성하는 방법은 아래와 같다. 어떤 클래스를 만들 때, 'extends'라는 키워드를 쓰고, 어떤 클래스를 이 클래스의 부모클래스로 할 것인지를 적어주면 된다. 이 클래스를 보면, 기존에 Parent라는 클래스가 있다. 그리고 Child라는 클래스를 만들 때, Parent라는 클래스를 부모로 했다. 이 두 클래스 Chld와 Parent를 상속관계에 있다고 한다. 자손은 조상의 모든 멤버를 상속받는다. (생성자, 초기화 블럭 제외) 자손, 조상 이라고 쓴 이유는, 부모의 보모가 있을 수도 있기 때문이다. 바로 위의 부모것만 상속받는 것이 아니라, 부모..