자바기초(27)
-
자바 라이브러리(Library)와 jar
java에서는 객체 단위로 작성하여 프로그램을 작성한다. 우리가 작성하는 class 외에 java에서는 미리 자주 사용되고 유용한 기능을 하는 class들을 만들어 놓고 제공을 한다. 이때 이 클래스들을 관련된 기능별로 분류하여 패키지 단위로 묶어서 관리하는데 이 패키지 파일을 라이브러리라고 하고, 이러한 클래스들의 코드를 문서로 제공하는 것이 API다. jar(Java Archive, 자바 아카이브)는 여러개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷이다. jar 파일은 여러개의 파일을 하나의 파일로 묶은 압축 파일이다. 이렇게 하나의 파일로 묶는 이유는 여러 클래스..
2020.05.13 -
자바 의존성
한 클래스가 다른 클래스의 객체를 사용할 때 두 클래스 간의 관계를 의존이라고 한다. 이해를 돕기 위해 코드를 예로 들어보겠다. public class 전사 { 무기 a무기 = new 무기(); void 공격() { a무기. 사용(); } } public class 무기 { void 사용(); } 위의 코드를 보면 전사라는 클래스와 무기라는 클래스 2개가 있다. 그리고 전사 클래스에서는 무기 객체를 만들어 무기 클래스 안에 있는 메서드를 사용한다. 이때 전사 클래스는 무기 클래스에 의존한다. 하고 하는데 전사 클래스 안에서 무기 객체가 등장하는 순간부터 그 객체가 없어지면 안 되기 때문이다. 이런 관계를 의존이라고 한다.
2020.05.13 -
(개인 공부) 자바 클래스와 객체 서술
class Main { public static void main(String[] args) { 게임.작동하다(); } } class 게임 { static void 작동하다() 무기 a무기; a무기 = new 무기(); } } class 무기 { void 공격() { } } 무기 a무기; 설명 무기 리모컨만 들어갈 수 있는 변수 a무기를 선언 a무기에는 현재 쓰레기 리모컨이 들어있다. 리모컨에는 공격이라는 버튼이 1개 있다. a무기는 작동하다() 함수가 시작되면 만들어진다. a무기는 작동하다() 함수가 종료되면 사라진다. a무기에 무기 리모컨이 아닌 다른 리모콘이 들어가려 하면 자동으로 무기 리모컨화 되어 들어간다. 만약 무기 리모콘화 하는데 안전하지 않을 가능성이 조금이라도 있으면 오류가 발생한다. a..
2020.05.02 -
자바 this
자바에서 this는 생성된 인스턴스안에서 인서턴스를 조종할 수 있는 리모콘이다. 클래스의 속성과 생성자/메소드의 매개변수의 이름이 같은 경우 자바에서는 구분을 할 수 없기 때문에 이 this 키워드를 사용해서 구분할 수 있게 해준다. public class Main { public static void main(String[] args) { Schedule schedule = new Schedule("2000", "2", "20"); System.out.println(schedule.year); System.out.println(schedule.month); System.out.println(schedule.day); } } class Schedule { public String year; // null..
2020.04.29 -
자바 상속과 구성
상속은 서로 다른 두 클래스를 부모 클래스 자식 클래스로 나누어 부모 클래스에 있는 필드와 메서드를 자식 클래스가 사용할 수 있게 한다. 상속을 사용하면 중복된 코드를 줄일 수 있고 유지 보수하기에 편리하다. 하지만 무분별한 상속은 코드를 복잡하게 만들고 여러가지 문제를 야기할 수 있다. 그럴 때 사용하는 것이 구성(compositon)이다. 기존의 부모클래스로 하려 했던 클래스의 주소 값을 참조하는 private 필드를 자식 클래스로 만들려 했던 클래스에 만드는 패턴을 구성이라고 한다. 새로운 클래스의 메서드들은 기존 클래스(부모 클래스로 하려 했던)에서 필요한 메서드를 호출하면 된다. 이를 전달이라고 하고 해당 메서드를 전달 메서드라고 한다. 구성은 기존 클래스의 세부 구현과 상관없기 때문에 기존 클..
2020.04.28 -
(개인 공부) 상속
public class Main { public static void main(String[] args) { 무기 a무기 = new 칼(); a무기.공격(); // 칼로 공격합니다. 활 a활 = new 활(); a무기 = a활; a무기.공격(); // 활로 공격합니다. } } class 무기 { void 공격() { } } class 칼 extends 무기 { void 공격() { System.out.println("칼로 공격합니다."); } } class 활 extends 무기 { void 공격() { System.out.println("활로 공격합니다."); } } 위 코드에서 a무기.공격();이 실행되기 위해 칼 클래스와 활 클래스를 무기 클래스에 상속해줬고 처음에 a무기에는 칼 리모컨을 그다음에 ..
2020.04.27