CS/Java

·CS/Java
라이브러리프로그램 개발 시 활용할 수 있는 클래스와 인터페이스를 모아둔 것~.jar 파일 형식으로 표현됨라이브러리에는 클래스와 인터페이스의 바이트 코드 파일(~.class)들이 압축되어 있음특정 클래스와 인터페이스가 여러 응용 프로그램에서 쓰인다면 이를 모아서 라이브러리(jar)로 압축하여 사용라이브러리를 만드는 방법위와 같은 라이브러리를 만드는 과정1. 이클립스에서 module.info.java 파일을 포함하지 않은 새 프로젝트를 생성2. 프로젝트 안에 패키지를 생성3. 패키지에 넣고 싶은 클래스, 인터페이스 작성4. jar 파일을 저장할 dist 폴더를 프로젝트 내부에 생성5. my_lib 우클릭 → Export 클릭6. dist 폴더에 jar 파일 생성6. 해당 라이브러리를 사용할 Applicati..
·CS/Java
내부 클래스?클래스 내부에 선언한 클래스클래스가 다른 클래스의 멤버가 될 수 있다.내부 클래스는 크게 네 종류로 구분된다.인스턴스 내부 클래스정적 내부 클래스지역 내부 클래스익명 내부 클래스// 외부 클래스class Outer { // 인스턴스 내부 클래스 class Inner1 {...} // 정적 내부 클래스 static class Inner2 {...} void function() { // 지역 내부 클래스 class Inner3 {...} }} 클래스 선언 위치에 따른 분류클래스 선언 위치객체 생성멤버 클래스인스턴스 내부 클래스class A {    class B {...}}B 클래스의 객체는 A 클래스의 객체가 생성된 이후에만 생성될 ..
·CS/Java
[Java] 인터페이스 interfaceLove IT! [Java] 인터페이스 interface 본문 CS/Java [Java] 인터페이스 interface 1in 2024. 5. 26. 14:25swlin23.tistory.com위의 게시물 처럼 메서드를 선언만 해둘 수도 있지만, 인터페이스 내에서 특별한 방법으로 메서드를 사용할 수 있다.Default Method만약, 인터페이스를 구현하는 여러 클래스 사이에서 특정 함수의 구현이 같다면 → 그 함수를 default 메서드로 만들 수 있다.interface Ex { default void func(int num) { return num; } }이처럼 default 메서드 내에서는 인터페이스도 메서드 구현을 할 수가 있다. 마찬가지로 접근제어자는 무조건..
·CS/Java
인터페이스?클래스 혹은 프로그램이 제공하는 기능을 명시적으로 선언하는 역할구현된 코드가 없고 추상 메서드와 상수로만 이루어져있다. 두 객체(A, B)를 연결해주는 connector 역할인터페이스를 통해 A가 B를 활용할 수 있음인터페이스는 A가 쓸 메서드 목록B에서 인터페이스의 메서드를 구현함객체 B가 객체 C로 대체될 수 있음A는 인터페이스에 있는 메서드만 사용 가능A가 인터페이스의 메서드를 사용 → 실행은 B/C에서 일어남 // 인터페이스 선언은 interface 키워드를 사용interface Calc { // 인터페이스에서 선언한 변수는 컴파일 과정에서 상수로 변환 double PI = 3.14; // 인터페이스에서 선언한 메서드는 컴파일 과정에서 public 추상 메서드로 변환됨 ..
·CS/Java
다운 캐스팅 만약, Animal 클래스의 자식 클래스에 Cat, Dog, Bird가 있다고 가정할 때 Animal animal = new Human(); 위와 같이 Animal 변수 선언에 Human 객체를 생성하면 Human이 Animal으로 묵시적 형변환이 일어나게 된다. 그러나 이 animal 변수를 다시 Human 형식으로 변환하는 때가 필요할 수 있다, 이 처럼 다시 원래의 자료형으로 형변환 하는 것을 다운 캐스팅 이라고 한다. instanceof 다운 캐스팅을 하기 전에 상위 클래스로 형 변환된 인스턴스의 원래 자료형을 확인해야 다시 원래 자료형으로 변형할 때의 오류를 막을 수 있다. 만약 위의 예시처럼 Human 클래스가 Animal 클래스로 변형 되었을 때, 이 때 사용된 animal 인스..
·CS/Java
Implicit Type Conversion 묵시적 형변환자식 클래스가 부모 클래스로 자동 형변환 되는 경우 만약, 자식 클래스에서 부모 클래스의 함수를 override 했을 때, 부모클래스로 형변환된 자식클래스의 객체는 어떤 함수를 사용하게 될까? 즉, 자식 객체에서 부모 객체로 형변환이 일어나더라도, 함수는 overriding된 자식 클래스의 함수를 사용하게 된다는 것 Explicit Type Conversion 명시적 형변환부모 객체에서 자식 객체로 형변환이 일어나는 것 이 때에는 직접 형변환 제시를 명시해주어야 함 자식 객체가 먼저 부모 객체로 형변환 된 후에, 그 객체를 다시 자식 객체로 형변환 하는 경우에만 가능하다! 이렇게 하지 않으면 ClassCastExeption이 발생한다. 즉, 변형하..
·CS/Java
Final Class 상속할 수 없는 클래스 보안과 관련되어 있거나 기반 클래스가 변하면 안 되는 경우에 클래스를 final로 선언함 ex) String, Integer ... Final Method 자식 클래스에서 override가 불가능함 Protected 접근 제어자 default와 public 사이의 범위를 가진 접근 제어자 같은 패키지에서 접근 가능 다른 패키지에서 자식 클래스에 대해서만 접근 가능
·CS/Java
상속(Inheritance) B 클래스가 A 클래스를 상속 받으면 B 클래스는 A 클래스의 필드와 메서드를 사용할 수 있음 → 유지 보수가 편하고, 프로그램을 수정하거나 새로운 내용을 추가하는 것이 편리함 클래스 상속 문법 자식 클래스 생성 extends 키워드를 사용함 // 예시 public class 자식클래스 extendss 부모클래스 {...} 이 문법에서 사용되는 부모클래스는 하나여야 함. 사용 예시: 포유류와 사람 (포유류는 상위 클래스, 사람은 하위 클래스) // 포유류 클래스 class Mammal { ... } // 사람 클래스 class Human extends Mammal {...} 자식 클래스의 객체를 만들 때, 부모 객체가 먼저 생성되고 이후에 자식 객체가 생성된다. 자식클래스 변..
·CS/Java
Static Member(정적 변수) 1. 정적 변수 선언 각 인스턴스마다 따로 생성되는 변수가 아닌, 클래스 전반에서 공통으로 사용할 수 있는 기준 변수 클래스에서 공통으로 사용하는 변수 static int var1; static 예약어를 사용하여 선언 static 변수는 클래스 내부에 선언하지만, 프로그램이 실행되어 메모리에 올라갔을 때, 딱 한 번 메모리 공간이 할당됨 그리고 그 값을 모든 인스턴스가 공유함(인스턴스가 같은 메모리를 가리킴) static 변수는 method area(static area)에 저장됨 2. 정적 변수 접근 정적 변수에 사용할 때에는 class 이름 + dot(.) + 정적변수이름 으로 접근함 객체로도 접근할 수는 있지만, 추천하지 않음 public class Calcul..
·CS/Java
클래스의 두 종류 라이브러리 클래스: 다른 클래스에서 사용하기 위해 만든 클래스 직접 실행되지는 않음 실행(executable) 클래스: main 메서드를 포함하여 직접 실행이 가능한 클래스 클래스의 구성요소 Field(멤버 변수) 객체의 데이터를 담음 변수 선언과 비슷한 문법을 지님 지역 변수(local variables)와의 차이점 멤버 변수는 클래스 블록 안에 선언되지만, 지역 변수는 생성자/메서드 블록 안에 선언된다. 멤버 변수는 객체의 데이터를 담으므로 heap에 저장되지만, 지역변수는 생성자/메서드의 변수이기 때문에 함수 실행 중에 stack에 생성이 되고, 함수 값이 반환되면 stack에서 사라진다. 멤버 변수는 객체의 내부/외부에서 모두 사용할 수 있지만, 지역 변수는 생성자/메서드 블록 ..
1in
'CS/Java' 카테고리의 글 목록