[JAVA] 추상클래스(abstract class)와 인터페이스(interface)의 차이 [추상클래스 VS 인터페이스, 예제를 통한 차이 비교]
·
◎ Java/Java☕
- 추상클래스(abstract class)와 인터페이스(interface)의 차이 1. 추상클래스(abstract class)란? 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스 → 미완성 설계도라 표현하며, 상속을 위한 클래스이기 때문에 따로 객체를 생성할 수 없다. abstract class 클래스이름 { ... public abstract void 메서드이름(); } 2. 인터페이스(interface)란? 추상클래스가 미완성 설계도라면 인터페이스는 기본 설계도와 같음 → 추상클래스처럼 다른 클래스를 작성하는데 도움을 주며, 다중상속(구현)이 가능하다. interface 인터페이스이름 { public static final 상수이름 = 값; public abstract..
[JAVA] 클래스 간의 관계 [Composite, 포함관계, 관계 결정하기]
·
◎ Java/Java☕
1. 클래스 간의 관계 상속 이외에도 클래스를 재사용하는 방법이 있다. 클래스 간에 '포함(Composite)' 관계를 맺어 주는 것 → 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언 원(Circle)을 표현하기 위한 Circle이라는 클래스가 있다. class Circle { int x; // 원점의 x좌표 int y; // 원점의 y좌표 int r; // 반지름(radius) } Point 클래스를 재사용해서 Circle 클래스를 작성한다면 다음과 같이 할 수 있다. class Circle { Point c = new Point(); // 원점 int r; // 반지름(radius) } class Point { int x; // x좌표 int y; // y좌표 } 하나의 거대한 클래스를 ..
[JAVA] 상속(inheritance)이란? [상속의 개념, 조상 클래스와 자손 클래스]
·
◎ Java/Java☕
1. 상속(inheritance)이란? 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 상속을 통해, 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있다. → 클래스 이름 뒤에 상속받고자 하는 클래스의 이름과 그 앞에 키워드 'extends'만 붙여주면 된다. class Child extends Parent { // Child 클래스가 Parent 클래스를 상속 받았다. } 2. 조상 클래스와 자손 클래스 위의 두 클래스는 서로 상속 관계에 있다고 한다. 상속해주는 클래스를 '조상 클래스', 상속 받는 클래스를 '자손 클래스'라 한다. 조상 클래스 : 부모(parent) 클래스, 상위(super) 클래스, 기반(base) 클래스 자손 클래스 : 자식(child..
[JAVA] 메서드(method)를 사용하는 이유 [높은 재사용성, 중복된 코드의 제거, 프로그램의 구조화]
·
◎ Java/Java☕
1. 메서드(method)란? 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것 메서드는 어렵게 생각할 것 없이, 넣을 값(입력)과 반환하는 결과(출력)만 알면 된다. 2. 메서드를 사용하는 이유 1) 높은 재사용성(reusability) 한번 만들어 놓은 메서드는 몇 번이고 호출할 수 있으며, 다른 프로그램에서도 사용이 가능하다. 2) 중복된 코드의 제거 반복되는 문장들을 묶어서 하나의 메서드로 작성해 놓으면, 메서드를 호출하는 한 문장으로 대체할 수 있다. 3) 프로그램의 구조화 큰 규모의 작업을 여러 개의 메서드에 담아 프로그램의 구조를 단순화 시킬 수 있다. 참고문헌 : 남궁성(2016), Java의 정석, 도우출판
[JAVA] 선언위치에 따른 변수의 종류 [인스턴스변수, 클래스변수, 지역변수]
·
◎ Java/Java☕
- 선언위치에 따른 변수의 종류 변수의 종류를 결정짓는 요소는 '변수의 선언된 위치'이다. 멤버변수를 제외한 나머지 변수들은 모두 지역변수이며, 멤버변수 중 static이 붙은 것은 클래스변수, 붙지 않은 것은 인스턴스변수다. /* 클래스 영역 */ class Variables { int iv; // 인스턴스변수 static it cv; // 클래스변수(static변수, 공유변수) /* 메서드 영역 */ void method() { int lv = 0; // 지역변수 } } 변수의 종류 선언위치 생성시기 클래스변수 (class variable) 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스변수 (instance variable) 인스턴스가 생성되었을 때 지역변수 (local variable) 클래스 ..