전체 글

· 객체지향
단일상속 java는 단일상속만 허용한다. (C++ 은 다중상속 허용) class TvDVD extends Tv, DVD { //에러 조상은 하나만 허용된다. } Tv와 DVD 의 메서드가 void power() 로 같고 내용이 다르다고 할 때 TvDVD가 상속받을 때 충돌이 일어난다. 그래서 자바는 다중상속을 하지않고 단일 상속으로 사용이 가능하다. 인터페이스를 이용하면 이러한 충돌문제를 해결하며 다중상속 효과를 낼 수 있게 한다. 인터페이스를 사용하지 않고 다중상속을 작성하는 방법 ▶ 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함 관계로 한다. TvDVD 클래스는 Tv를 상속한다. DVD 클래스는 객체를 생성하고 메서드 선언을 하여 사용을 하게 한다. 이렇게 하면 다중상속과 같은 효과를 나타낼 ..
· 객체지향
포함관계 ▶ 포함(composite)이란? - 클래스의 멤버로 참조변수를 선언하는 것 - 작은 단위로 클래스를 만들고 이것을 조합해서 클래스를 만듬 [ Circle 클래스가 Point를 포함하는 관계 ] 클래스의 멤버로 참조변수. 다른 클래스타입의 변수를 선언하고 그 타입의 객체를 만들어준다. 클래스 간의 관계 결정 ▶ 상속관계 ~은 ~이다 (is - a) ▶ 포함관계 ~은 ~을 가지고 있다. (has-a) 1. (포함) 2. (상속) class Point { int x; int y; } 메모리구조
· 객체지향
상속 (Inheritance) 1. 기존의 클래스로 새로운 클래스를 작성하는 것 ( 코드의 재사용 ) 2. 두 클래스를 부모와 자식으로 관계를 맺어주는 것 객체지향프로그램에서 부모클래스(상위)에서 자식클래스(하위)에게 물려줄 수 있다. 상속은 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 코드의 중복을 줄여준다. B b = new B(); b.field1 = 10; b.method1(); b.field2 = "홍길동"; b.method2(); 클래스 상속 class 자식클래스 extends 부모클래스 { //필드 //생성자 //메서드 } 자손은 조상의 모든 멤버를 상속받는다. ( 생성자, 초기화블럭제외 ) 자손의 멤버개수는 조상보다 적을 수 없다. (같거나 많다.) 부모의 변경은 자손..
· java
보호되어 있는 글입니다.
· java
1. 패키지 자바에서는 클래스를 체계적으로 관리하기 위해 패키지(package)를 사용한다. 우리가 폴더를 만들어 파일을 저장 관리하듯이 패키지를 만들어 클래스를 저장 관리한다. 패캐지는 클래스를 유일하게 만들어주는 식별자 역할을 한다. 클래스 이름이 동일 하더라도 패키지가 다르면 다른 클래스로 인식한다. 클래스의 전체 이름은 "패키지명+클래스명"인데 패키지가 상, 하위로 구분되어 있다면 도트(.)를 사용해서 다음과 같이 표현한다. 상위패키지.하위패키지.클래스 Person 클래스가 com.mycompany 패키지에 속해 있다면 Person클래스의 전체 이름은 com.mycompany 폴더에 Person.class 가 위치한다. 클래스만 따로 복사해서 다른 곳으로 이동하면 그 클래스는 사용할 수 없기에 클..
· java
final 필드선언 final 타입 필드 [= 초기값]; final 필드는 초기값이 저장되면 이것이 최종적인 값이 되어서 프로그램 실행 도중에 수정 할 수 없다. 제어자 대상 의미 final 클래스 변경될 수 없는 클래스,확장될 수 없는 클래스가 된다. 그래서 final로 지정된 클래스는 다른 클래스의 조상이 될 수 있다. 메서드 변경될 수 없는 메서드, final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 없다. 멤버변수 변수 앞에 final이 붙으면, 값을 변경할 수 없는 상수가 된다. 지역변수 ▶ 초기값을 줄 수 있는 방법 2가지 필드 선언시 주는 방법 생성자에게 주는 방법 public class Person{ final String nation = "korea"; final String s..
· java
정적멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메서드를 말한다. 각각 정적필드, 정적 메서드라고 부른다. 정적멤버는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 클래스 멤버라고 한다. 정적멤버선언 public class 클래스 { //정적필드 static 타입 필드 [=초기값]; //정적 메서드 static 리턴타입 메서드 (매개변수선언, ..) {..} } 정적필드와 정적메서드는 클래스에 고정된 멤버로이므로 클래스로더가 클래스(바이트 코드)를 로딩해서 메서드 메모리 영역에 적재할 때 클래스별로 관리된다. 따라서 클래스의 로딩이 끝나면 바로 사용할 수 있다. ▷인스턴스필드 vs 정적필드 필드를 선언할때, 인스턴스 필드로 선언할 것인지 정적필드로..
인스턴스(instance) 멤버란 객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메서드를 말한다. 각각 인스턴스 필드, 인스턴스 메서드라고 부른다. 스택영역에 생기는 변수인 지역변수는 개발자가 별도로 초기화하지 않으면 쓰레기 값을 갖게 된다. classArea(methodArea)과 Heap은 별도로 초기화해주지 않아도 정수형은 0, 부동소수점은 0.0, 논리형은 false, 객체는 null로 초기화 된다. 지역변수는 별도로 초기화해야 하는데 멤버변수는 왜 자동으로 초기화가 될까? 그것은 지역변수는 한 지역에서만 쓰는 변수이지만 멤버변수는 공유변수의 성격을 가지고 있기 때문이다. public class Car { //필드 int gas; //메서드 void setSpeed(int speed) {} ..
· java
프로세스와 스레드 운영체제에서는 실행중인 하나의 애플리케이션을 프로세스(Process)라고 부른다. 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데 이것이 프로세스이다. 스레드는 사전적 의미로 한 가닥의 실이라는 뜻인데, 한 가지 작업을 실행하기 위해 순차적으로 실행할 코드를 실처럼 이어 놓았다고 해서 유래된 이름이다. 하나의 스레드는 하나의 코드 실행 흐름이다. 멀티 스레드는 스레드들이 동시에 실행되는 것처럼 보이는 기술이라고 할 수 있다. 예를 들어보면 A 작업어플 - 프로세스 100개 만들기 B 어플 - 프로세스1개 , 스레드 100개 만들기 A와 B 둘중에 어느 작업이 더 효울적일까? 답은 B의 작업이다. ▷ 멀티 태스킹 멀티 태스킹은..
· java
SOLID 객체지향설계 정의 응집도를 높이고 (High Cohesion) 결합도는 낮추는(Loose Coupling) 는 고전원칙을 객체지향의 관점에서 재정립한 것이 SOLID 5원칙이다. SRP (Single Responsibillity Principle): 단일책임원칙 OCP (Open Closed Prinsipel) : 개방폐쇄원칙 LSP ( Liskov Substitution Principle) :리스코프 치환원칙 ISP (Interface Segregation Principle) : 인터페이스 분리 원칙 DIP (Dependency Inversion Principle ) : 의존역전원칙 SOLID가 개념이긴 하지만 우리가 만드는 제품, 즉 소프트웨어에 녹여내야 하는 개념이다. SOLID 를 잘 ..
-JUNHEOK-
개발일지