반응형

간단 지식/Java 15

13. 추상클래스와 추상메소드

클래스는 두 부류로 나눠볼 수 있다. 1. 실체클래스 2. 추상클래스 단순하게 객체를 직접 생성할 수 있으면 실체클래스이고, 그렇지 않으면 추상클래스이다. 좀 더 정확히 말하자면 실체 클래스들의 공통적인 특성을 추출하여 만든 클래스를 추상클래스라고 한다. 즉, 이 둘은 상속관계로 묶여있다. 부모는 추상클래스, 자식은 실체클래스다. 추상클래스는 새 실체 클래스를 만들기 위해서만 사용된다. 용도가 하나밖에 없는데 왜 필요하냐고 묻는다면 이유는 2가지가 있다. 첫째, 실체 클래스들의 공통된 필드&메소드를 통일함으로써 동일한 기능을 하는 멤버가 다른 이름으로써 여럿 존재하게되는 비합리성을 줄여준다. 둘째, 실체 클래스 생성 시간을 절약해준다. 키워드는 abstract로, 선언방식은 다음과 같다. public a..

간단 지식/Java 2020.07.06

12. 상속

어떤 클래스 A의 field와 method를 어떤 클래스 B에게 상속해주면 클래스 B에서는 아무 제약없이 클래스 A에 있는 field와 method를 가져다 쓸 수 있다. 이런 관계를 상속관계라 부르며 A를 상위 클래스, B를 하위 클래스라고 부른다. 상속의 장점은 2가지가 있다. 하나는 코드의 중복이 감소한다는 것이고, 또 하나는 부모 클래스의 수정으로 모든 자식 클래스의 수정 효과를 볼 수 있다는 것이다. 사용 키워드는 extends로, 다음과 같다. public class B extends A{ ... } 단, 접근제한자가 private인 field와 method는 상속 대상에서 제외된다. 또한 부모, 자식 클래스가 서로 다른 패키지에 있다면 접근제한자가 default인 field와 method도 ..

간단 지식/Java 2020.06.25

11. Getter & Setter

OOP에서는 외부에서 객체 내부 data에 직접적으로 접근하는 것을 막는다. 이는 무결성을 깨지 않기 위함이다. 대신 메소드를 이용한 data 변경과 설정을 대안으로 두었다. 그게 바로 Getter와 Setter이다. Getter data read을 위해 메소드 이용 메소드로 필드값을 가공 후 전달 Setter data write를 위해 메소드 이용 메소드가 매개값을 검증 후 유효한 값만 수신 아래 코드는 Getter와 Setter의 예시이다. public class School{ private String name; private int num; public String getName(){ return name; } public int setNum(int name){ this.num = num + 10..

간단 지식/Java 2020.06.22

10. 접근제한자(public, protected, default, private)와 싱글톤

여러 패키지, 클래스를 이용한 프로그래밍을 하다보면 클래스 외부로부터의 접근을 제한할 필요가 느껴진다. 이 문제를 해결해주는건 바로 접근제한자들이다. 접근제한자 적용가능한 대상 외부에서 접근가능한 클래스 범위 외부에서 호출가능한 생성자 범위 public 클래스, 필드, 생성자, 메소드 모든 외부에서 접근 가능 모든 패키지에서 호출 가능 protected 필드, 생성자, 메소드 같은 패키지의 클래스 또는 자식클래스에서만 접근 가능 같은 패키지의 클래스 또는 자식클래스에서만 호출 가능 default 클래스, 필드, 생성자, 메소드 같은 패키지인 클래스에서만 접근가능 같은 패키지의 클래스에서만 호출가능 private 필드, 생성자, 메소드 모든 외부에서 접근 불가능 외부에서 객체 생성 불가능 클래스에 적용가능..

간단 지식/Java 2020.06.21

09. Package와 import

아직 대형 프로젝트를 접할 일이 없는 학부생이어서 그런지 패키지를 본격적으로 사용해본적은 없다. 패키지는 상위/하위 패키지 형식으로 조직될 수 있으며 패키지의 클래스의 이름은 상위패키지이름.하위패키지이름.class가 된다. 같은 패키지 내부에서는 아무 조건 없이 다른 클래스의 필드와 메소드를 가져다 사용할 수 있다. 하지만 다른 패키지의 입장에서 보면 얘기가 달라진다. 이름이 A인 패키지와 이름이 B인 패키지가 있다고 가정해보자. B 패키지에서 A 패키지의 Test클래스에 선언된 필드와 메소드를 사용하려면 어떻게 해야할까? 방법은 2가지가 있다. 1. 패키지 객체 생성 -> A.Test.필드명 = new A(); 2. import 사용 -> import A.Test; or import.A *; 이후 클래..

간단 지식/Java 2020.06.21

08. 정적멤버(static)와 final필드와 상수

정적 멤버란, 클래스에 고정된 멤버로 객체를 생성하지 않고도 사용할 수 있는 필드 또는 메소드를 말한다. 클래스 멤버라고도 부른다. 선언 방법은 일반적인 필드, 메소드 선언 앞에 static만 붙여주면 된다. 정적 멤버가 필요한 이유는 무엇일까? 바로 공용 데이터를 위해서이다. 예를 들어 수학 기호 파이의 값은 항상 3.14159.... 이다. 이런 값들은 객체가 굳이 가지지 않아도 되는 공용 데이터가 될 수 있다. 따라서 static double pi = 3.14159 로 선언하면 객체를 사용하지 않아도 가져다 쓸 수 있는 정적 필드가 된다. 마찬가지로 인스턴스 필드를 사용하지 않고 오로지 매개값만을 가지고 연산하는 메소드는 static으로 선언해줄 수 있다. 이런 정적멤버들을 외부에서 사용하려면 클래..

간단 지식/Java 2020.06.20

07. 클래스 - 필드, 생성자, 메소드

클래스 이름을 Test로 하고싶다면 우선 Test.java 파일을 생성해야한다. 그리고 public class Test{ } 라는 형태로 클래스를 선언해야한다. 한 파일에는 일반적으로 하나의 클래스를 선언해서 사용하지만, 추가로 클래스를 선언하는 것이 에러라는 건 아니다. 다만 추가로 선언할 클래스에는 public 키워드가 붙어서는 안된다. 어쨋건 java 파일을 컴파일하면 byte code file은 클래스의 개수만큼 생성된다. 클래스의 용도는 라이브러리용, 실행용으로 구분되는데 main 메소드가 있는 클래스를 실행용이라고 생각하면 된다. new 연산자를 이용하면 클래스로부터 객체를 생성할 수 있다. ex) Test test = new Test(); 이렇게 생성되는 객체는 Test클래스의 instanc..

간단 지식/Java 2020.05.29

06. OOP(Object Oriented Programming)의 특징

java는 객체지향프로그래밍(OOP)을 할 수 있게 해주는 언어이다. 그렇다면 객체에 대해서 우선적으로 알아야한다. 객체는 속성(field)과 동작(method)으로 구성되며, 각 객체는 다른 객체와 구별되는 독립적인 존재이다. 그리고 객체는 일반적으로 다수의 객체와 연결되어 조직되며 이러한 프로그래밍을 OOP라고 부른다. 객체 간의 관계는 집합,사용,상속 관계로 정의된다. 이렇게 객체들의 관계로 구성되는 프로그램, OOP의 특징은 대표적으로 아래 5개가 있다. 캡슐화 객체의 field와 method를 처리하는 함수를 하나로 묶어 세부내용은 은닉 객체의 재사용 용이 상속 이미 정의된 상위 클래스의 모든 속성, 연산을 하위 클래스에게 전달 단일 상속, 다중 상속 효율 상승, 개발시간 단축, 유지보수 용이 ..

간단 지식/Java 2020.05.28
반응형