JAVA 34

[VsCode] java import 안되는 에러 발생 시

The import java.util.Collections cannot be resolved Collections 을 쓰려고하는데 자꾸 에러가 났다 .. import java.util을 써봐도 계속 오류 오류 오류 java workspace를 다시 삭제하고 vscode를 재실행 시켜주면 된다고 찾았는데. 도대체 이놈의 맥은 workspace가 어딨는지 찾기도 힘듬.. 찾아보니 F1 눌러서 java clean 쳐주면 바로 해당 기능이 뜬다! 첫번째꺼 누르면 자동으로 삭제되고, vscode도 알아서 재실행된다! 그럼 이제 import 됨!!!! 유후 참고 블로그. https://goodteacher.tistory.com/478 [vscode] 자바 컴파일이 안될 때 vscode 사용 중 클래스를 로드할 수 ..

JAVA 2022.06.12

인터페이스(interface)

📌 인터페이스 (interface) : 인터페이스는 일종의 추상클래스이다. 오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외 다른 요소는 허용하지 않는다. 추상클래스를 부분적으로만 완성된 '미완성 설계도'라고 한다면, 인터페이스는 구현된 것은 아무것도 없고 밑그림만 그려져 있는 '기본설계도'라 할 수 있다. 인터페이스 작성방법 interface 인터페이스이름{ public static final 타입 상수이름 = 값 ; public abstract 메서드이름 (매개변수목록); } - 접근제어자로 public 또는 default를 사용할 수 있다. 인터페이스 제약사항 더보기 1. 모든 멤버변수는 public static final이어야 하며, 생략할 수 있다. 2. 모든 메서드는 public ab..

추상클래스 (abstract class) / 추상 메서드 (abstract method)

📌 추상클래스 (abstract class) : 미완성된 클래스 추상클래스로 인스턴스를 생성할 수 없다. 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 추상클래스 자체로는 클래스로서의 역할을 다 못하지만, 새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스로서 중요한 의미를 갖는다. 새로운 클래스를 작성할 때 아무 것도 없는 상태에서 시작하는 것보다는 완전하지는 못하더라도 어느정도 틀을 갖춘 상태에서 시작하는 것이 나을 것이다. 추상 클래스 선언하는 방법 - 클래스 선언부의 abstract를 보고 이 클래스에는 추상메서드가 있으니 상속을 통해서 구현해주어야 한다고 쉽게 알 수 있다/ abstract class 클래스 이름{ ... } 추상클래스에도 생성자가 있으며, 멤버변수와 메..

다형성(polymorphism)

📌 다형성? : 여러 가지 형태를 가질 수 있는 능력 상속과 함께 객체지향개념의 중요한 특징이며, 상속과 깊은 관계가 있다. 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 조상 클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다. ⚠️ 인스턴스 타입과 일치하는 참조변수를 사용하면 인스턴스의 멤버들을 모두 사용할 수 있을 텐데 왜 조상타입의 참조변수를 사용해서 인스턴스의 일부 멤버만을 사용하도록 하는 것일까? - 어떤 참조변수를 사용하느냐에 따라 사용할 수 있는 멤버의 개수가 다르다. - 또한 조상클래스와 자손클래스에 동일한 멤버변수가 정의되어있다면, 어떤 참조변수를 사용하느냐에 따라 서로 다른 결과를 얻는다. (참조변수와 인스..

제어자/ static / final/ abstract / public / protected/ default / private

제어자 ( modifier) : 클래스, 변수, 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자의 종류는 접근제어자와 그 외의 제어자로 나눌 수 있다. 접근 제어자 : public, protected, default , private 그 외 : static , final, abstract, native, transient, synchronized, volatile, strictfp static : 공통적인, 클래스의 static 은 '클래스의' 또는 '공통적인'의 의미를 가지고 있다. 클래스변수(static변수)는 모든 인스턴스가 공유하기 때문에, 인스턴스에 관계없이 같은 값을 갖는다. static 이 붙은 멤버변수와 메서드는 인스턴스를 생성하지 않고도 사용할 수 있다. 인스턴스 메서드..

오버라이딩(overriding) / 오버로딩 (overloading) / super / super()

오버라이딩 (overriding) : 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것 상속받은 메서드를 자손 클래스에 맞게 변경하는 경우, 조상의 메서드를 오버라이딩 한다. override : ~위에 덮어쓰다 (overwrite) class Point{ int x; int y; String getLocation() { return "x :" + x + ", y" + y; } } class Point3D extends Point{ int z; //오버라이딩 String getLocation() { return "x :" + x + ", y" + y + ", z" + z; } } 오버라이딩의 조건 자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와 1. 이름이 같아야 한다. 2. 매개변수가..

상속(inheritance) / 포함(Composite) 관계

상속 : 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 장점 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성을 높이고 유지보수를 편리하게 한다. 사용법 - extends 상속 받고자하는 클래스명 - 상속을 받는다 = 조상클래스를 확장한다 => extends class Parent {...} class Child extends Parent {...} 위 두 클래스는 서로 상속관계에 있다고 하며, 상속해주는 클래스를 '조상클래스'라 하고 상속받는 클래스를 '자손클래스'라고 한다. 조상 클래스 : 부모(parent)클래스, 상위(super)클래스, 기반(base)클래스 자손 클래스 : 자식(child)클래스, 하위(sub)클래스, 파생된(derived)클래스 Child클래스는 Par..

아이템35. ordinal 메서드 대신 인스턴스 필드를 사용하라

아이템35. ordinal 메서드 대신 인스턴스 필드를 사용하라 열거 타입 상수는 열거 타입에서 몇 번째 위치인지를 반환하는 ordinal 메서드를 제공한다. 다만, 상수 선언의 순서가 바뀌거나 값의 중간이 없는 경우 ordinal을 쓰는 것은 좋지 않다. 해결책으로 열거 타입 상수에 연결된 값은 ordinal 메서드 대신, 인스턴스 필드에 저장하자. // ordinal을 잘못 사용한 예 - 따라하지 말 것 public enum Ensemble{ SOlO, DUET, TRIO, OCTET, NONET; public int numberOfMusicians() { return ordinal() + 1; } } public enum Ensemble{ SOlO(1), DUET(2), TRIO(3), OCTET(..

JAVA/Effective Java 2022.05.30

아이템34. int 상수 대신 열거 타입을 사용하라

아이템34. int 상수 대신 열거 타입을 사용하라 열거 타입은 일정 개수의 상수 값을 정의한 다음, 그 외의 값은 허용하지 않는 타입이다. 열거타입 정리 참조 1. 정수 열거 패턴 기법 public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public static final int ORANGE_NAVEL =0; public static final int ORANGE_TEMPLE =1; public static final int ORANGE_BLLOD = 2; 단점 타입 안전을 보장할 방법이 없으며 표현력이 좋지 않다. if(A..

JAVA/Effective Java 2022.05.30