본문 바로가기

프로그래밍/JAVA

(27)
[JAVA] 추상클래스(Abstract Class) 자바의 정석과 오픈튜토리얼의 강좌를 통해 작성한 내용입니다. 0. 들어가기에 앞서 abstract : 상속해서 사용하도록 강제하는 것위 코드는 다음과 같은 에러를 가진다. abstract로 선언한 추상클래스 A는 반드시 상속을 해야 한다. abstract class A{ public abstract int b(); // 추상메서드 (즉, 로직을 가질 수 없음) B클래스에서 b메서드 구현 public void d(){ System.out.println("business"); } } class B extends A { public int b(){ // 추상클래스 A의 b메서드를 구체적으로 구현. return 1; } } class exercise { public static void main(String[]..
[JAVA] 다형성(polymorphism) JAVA의 정석(2nd Edition) (남궁 성 著) 265p~287p 를 참조해 코드를 작성했으며 개인적인 공부 내용을 적은 것이므로 오류가 있을 수 있습니다.'' 0. 들어가기에 앞서 다형성은 상속과 깊은 관계가 있으므로, 충분히 해당 내용이 뭔지 숙지해야 한다.(링크 : http://whatisthenext.tistory.com/34) 다형성 : 하나의 메소드나 or 하나의 클래스가 다양한 방법으로 동작하는 것을 의미한다. 1. 다형성 객체지향개념에서 "다형성(polymorphism)"이란 여러 가지 형태를 가질 수 있는 능력을 의미한다.자바에서는 이를 한 타입의 참조변수로 여러 타입의 객체를 "참조"할 수 있도록 지원한다. [ 예 제 1 ] A타입의 B인스턴스가 생성이 된 상황.클래스 B를 클래..
[JAVA] 제어자(modifier) JAVA의 정석(2nd Editionm) (남궁 성 著) 254p~264p 를 참조해 코드를 작성했으며개인적인 공부 내용을 적은 것이므로 오류가 있을 수 있습니다. 0. 들어가기에 앞서 제어자는 " 규제 " 이다. 사회도 커지면 질서가 필요하듯이프로그래밍 코드가 추가되면서 내용이 늘어나면 역시 질서가 필요하다. 1. 제어자(modifier) modify에 대한 뜻을 찾아보면 다음과 같다. '한정어'라는 말이 잘 어울린다. 접근제어자 - public, protected, default, private (오른쪽으로 갈수록 범위가 좁아짐)그 외 - static, final, abstract, native, transient, synchronized, volatile, strictfp 제어자는 클래스, 멤버변수..
[JAVA} 클래스 패스(Class Path)와 패키지(Package) https://opentutorials.org/course/1223/5527(오픈튜토리얼)과난 정말 JAVA를 공부한 적이 없어요(윤성우 저, 오렌지 미디어)을 참고해 작성했습니다. 0. 서론 클래스 패스를 왜 사용해야 하는 것일까? 먼저 예제를 살펴보자. [1] 새로운 Java Project를 생성한다. [2] myclass라는 새로운 프로젝트를 생성한다. [3] 다음 위와 같이 코드를 작성한다. 이후 컴파일을 시켜보면 [4] 다음과 같이 파일이 새로 만들어진다. [5] AAA클래스와 BBB클래스를 새로 만든 mysubclass 폴더안에 집어넣은 뒤 실행시켜보자. 그러면 아까와 달리 컴파일이 되지 않는다. [6] 위와 같은 에러가 발생한다. 하위폴더를 만들어서 클래스를 옮긴 것 뿐인데 왜 그럴까? 세 ..
[JAVA] 오버라이딩(overriding) JAVA의 정석(2nd Editionm) (남궁 성 著) 238p~246p 를 참조해 코드를 작성했으며개인적인 공부 내용을 적은 것이므로 오류가 있을 수 있습니다. 0. 들어가기에 앞서 오버라이딩은 상속(inheritance)와 관련이 깊은 내용이다. 따라서 공부하기 이전에 상속에 대한 내용을 충분히 숙지하기 바란다. (링크 : http://whatisthenext.tistory.com/19) 공부하면서 객체지향 프로그래밍은 "효율화"를 지향한다고 느꼈다. 효율화에 관점에서 본다면, 왜 상속이 필요한지, 왜 오버라이딩이 필요한지 조금이나마 알 수 있을 것 같다. 1. 오버라이딩(overriding) 조상 클래스로부터 상속받은 메서드(method) 내용을 자식 클래스에서 변경(변수 또는 메서드)하는 것. ..
[JAVA] 상속(Inheritance) JAVA의 정석(2nd Editionm) (남궁 성 著) 222p~237p 를 참조해 코드를 작성했으며 개인적인 공부 내용을 적은 것이므로 오류가 있을 수 있습니다. 0. 들어가기에 앞서 유교 문화의 관점에서 "부모가 자식보다 더 큰 존재다."라고 한다면 왼쪽 그림이 맞을 것이다.하지만 자바에서는 그렇지 않다. Child는 Parent의 재능(인스턴스)을 상속받아 더 많은 활동을 할 수 있다. 만약 부모가 talk, calculate, draw라는 메서드를 가지고 있다면, 고스란히 자식도 그 기능을 사용할 수 있다.따라서, 자손 클래스는 항상 조상 클래스보다 같거나 많은 멤버를 갖게 된다. 조상 클래스 - 부모(parent) 클래스, 상위(super) 클래스, 기반(base)클래스자손 클래스 - 자식(c..
[JAVA] 생성자(Constructor) JAVA의 정석(2nd Editionm) (남궁 성 著) 191p~199p 를 참조해 코드를 작성했으며개인적인 공부 내용을 적은 것이므로 오류가 있을 수 있습니다. 0. 들어가기에 앞서 개인적으로 생성자를 공부할 때 가장 어려웠다.왜 있어야 하는지도 모르겠고, 언제 사용해야 하는지도 잘 모르겠다. 내가 시행착오를 겪어가며 이해한 내용을 정리하고자 한다. 클래스(class)는 인스턴스를 만들기 위한 기본 뼈대이고인스턴스(instance)는 구체적인 "상태(variable, 변수)" 와 "행위(method, 기능)"의 집합이라고 생각하자. 위 카드를 생각해본다면 비자카드 클래스(class)에 대표적으로 들어가야 할 것들이 있을 것이다. 1. 고객의 이름 (변수) 2. 카드 유효기간 (변수) 3. 카드 번호 ..
[JAVA} 메서드 오버로딩(method overloading) JAVA의 정석(2nd Edition) (남궁 성 著) 186p~190p 를 참조해 코드를 작성했으며개인적인 공부 내용을 적은 것이므로 오류가 있을 수 있습니다. 1. 메서드 오버로딩이란? 같은 이름을 갖고 있지만, 서로 다른 매개변수 형식을 가지고 있는 메서드를 여러 개 정의하는 것. loading은 물건을 싣는 것이다. over loading이면 과적해서 싣는 것이다. 보통 하나의 메서드로 하나의 기능만 구현해지만하나의 메서드로 여러 기능을 구현하기 때문에 붙여진 이름이다. 2. 오버로딩의 조건 1. 메서드의 이름이 같아야 한다. (위 예제는 add)2. 메서드의 리턴타입이 다른 경우는 오버로딩이 성립되지 않는다. ( 위 예제는 int )3. 매개변수의 개수 or 매개변수의 자료형이 달라야 한다. (..