Back-End/JAVA 39

[Java] Wrapper Class

1) Wrapper Class 기본형 타입인 변수를 객체로 사용 가능하게 도와주는 클래스 기본형 타입의 클래스 타입 ex) int ---> Integer / char ---> Character 2) Wrapper 문법 Wrapper클래스명 객체명 = new Wrapper생성자(값); => 박싱 기본자료형 변수명 = Wrapper객체.~~~value( ); => 언박싱 int data = 10; Integer obj = new Integer(10); // 박싱 // System.out.println(obj); int result = obj.intValue(); // 언박싱 but, jdk 1.5 버전부터는 오토를 지원한다. Integer obj = 10; // 오토박싱 int result = obj; //..

Back-End/JAVA 2021.05.31

[Java] Object 클래스

1) Object 클래스 모든 클래스들의 최상위 클래스 1. toString( ) : 객체 출력시 나올 문자열 정의 2. equals( ) : 두 주소값이 같은지 확인하는 메소드 == : 두 주소값이 같은지 확인하는 연산자 **equals 재정의 순서** @Override public boolean equals(Object obj) { // 타입비교>다운캐스팅>조건에 맞춰서 비교하기 if (obj instanceof Test) { // 타입비교 Test target = (Test) obj; // 다운캐스팅 if (this.data == target.data) { // 다운캐스팅된 것과 조건 비교 return true; } }return false; } 3. hashCode( ) : 해쉬값(주소값 관련된 ..

Back-End/JAVA 2021.05.31

[Java] 예외 처리

1) 에러와 예외의 차이 1. 에러 심각한 오류 2. 예외 덜 심각한 오류 2) try ~ catch ~ finally try{ 예외가 발생할 수 있는 문장1 예외가 발생할 수 있는 문장2 } catch( 예외클래스명 객체명 ){ 예외 발생시 실행할 문장 } catch( 예외클래스명 객체명 ){ 예외 발생시 실행할 문장 } ... (catch문은 여러개 가능) fianlly{ 예외 발생 유무에 상관없이 무조건 실행할 문장 } // finally문은 생략 가능 ** 해당 구문 블럭처리 후 alt + shift + z + 아래화살표 : try~catch 블럭 만들기 ** package exception; public class ExceptionTest { public static void main(Strin..

Back-End/JAVA 2021.05.28

[Java] 내부 클래스(inner class)

1) 내부클래스 클래스 내부에 클래스를 선언하여 외부 클래스의 필드에 용이하게 접근하기 위해서 사용한다. 내부 클래스의 필드를 사용하기 위해서는 외부 클래스 객체에서 내부 클래스를 객체화해야한다. 하지만 외부 클래스의 필드에서는 자신이랑 같이 올라와있는 내부 클래스를 바로 객체화 할 수 있다. 외부클래스명 out = new 외부클래스생성자( ); 외부클래스명.내부클래스명 in = out.new 내부클래스생성자( ); 2) 내부클래스 사용이유 1. 상속처럼 이용 외부 클래스의 필드를 마치 내것처럼 접근하여 사용하기 위함 2. 캡슐화 외부 클래스가 없다면 내부 클래스도 존재할 수 없기 때문에 다른 클래스에서 접근하지 못하도록 내부 클래스를 숨기기 위함(직접 객체화하지 말라는 뜻) 3) 가정 A 클래스에서 b..

Back-End/JAVA 2021.05.28

[Java] 인터페이스(interface)

추상클래스를 고도화시킨 문법이며, 반드시 추상메소드와 상수만 선언해야한다. 다른 클래스에서 인터페이스를 지정받을 때에는 implements를 사용한다. 지정받은 클래스는 인터페이스가 갖고있는 추상 메소드들을 반드시 재정의 해야한다. interface 인터페이스명{ 상수 추상메소드 default 메소드 } jdk8 버전 이후부터는 인터페이스에 default 메소드를 선언할 수 있다. 따라서 사실상의 다중상속을 지원하게 된다. 인터페이스 끼리나 다른 클래스와의 메소드 모호성이 발생한다면(이름 중복) 지정, 상속받은 클래스에서 명시적으로 작성(재정의)해 주어 모호성을 해결해줘야한다. public class D extends C implements A, B { @Override public void f() { ..

Back-End/JAVA 2021.05.27

[Java] 추상 클래스(abstract)

1) 추상 클래스(불완전한 클래스) 추상적인 내용만 정의하고 있는 클래스로 구체적인 내용은 상속받은 하위 클래스에서 구현되도록 설계된 클래스이다. 추상 클래스(부모)는 클래스들(자식)의 공통 요소들을 가상화시켜놓기 때문에 객체화시 구현(재정의)을 꼭 해줘야한다. 부모 추상 클래스의 역할은 단지 자식 클래스를 만들 때 도와주는 역할을 수행한다. 그렇기 때문에 자식 클래스에서 선언할 메소드의 이름과 형태만 가지고 있다. 즉, 메소드에 { } (바디)가 없다. 이런 메소드를 추상 메소드라고 하며, 리턴타입 앞에 abstract 라는 키워드가 붙는다. 추상 메소드가 클래스 내에 한 개라도 포함되어있다면 추상 클래스로 선언해야 한다. 2) 추상 클래스 선언 abstract class 클래스명{ 리턴타입 일반메소드..

Back-End/JAVA 2021.05.27

[Java] 접근 권한 제어자(접근제어자)

다른 패키지 혹은 다른 클래스에서 해당 필드에 접근할 수 있는 범위를 설정해주는 키워드들 1. default : 다른 패키지에서 접근 불가. 2. public : 모든 곳에서 접근 가능. 다른 패키지에서 어떤 객체로 해당 필드에 접근하고 싶을 때 3. private : 자기자신의 클래스에서만 사용가능. 다른 클래스에서 접근 불가. 다른 곳에서 해당 필드에 절대 접근하지 못하게 하고 싶을 때 4. protected : 다른 패키지에서 접근 불가. 단, 상속받은 자식클래스에서는 접근 가능. 객체화해서 사용 불가능. 상속받은 클래스에서 자신의 필드처럼 쓰게 하고 싶을 때 private 필드는 직접 접근할 방법이 전혀 없기 때문에 무조건 public 메소드를 통해서 간접 접근한다. public 메소드를 통해서 ..

Back-End/JAVA 2021.05.27

[Java] Casting(Upcasting, Downcasting), instanceof

1) 업 캐스팅(Up Casting) 부모 타입의 객체에 자식 생성자를 호출 부모 타입의 객체에 자식 클래스의 필드 주소값을 담아주는 것 업 캐스팅된 객체는 자식 클래스에서 추가된 내용을 사용할 수 없다. 부모 필드의 내용만 사용 가능하다. 단, 오버라이딩 된 메소드는 사용 가능하다. 부모클래스 객체명 = new 자식생성자(); package zoo; public class Ground { public static void main(String[] args) { //Dog jindo = new Dog("백구", "수컷", 21); //Hamster panda = new Hamster("햄토리", "암컷", 18); //jindo.makeSomeNoise(); //panda.makeSomeNoise(); ..

Back-End/JAVA 2021.05.27

[Java] 상속(inheritance)

1) 상속의 목적 1. 기존에 선언된 클래스의 필드를 다른 클래스에서 사용하고자 할 때 2. 클래스들을 만들다 보니 공통 요소가 보여서 부모로 묶은 후 상속시켜 주어서 사용하고자 할 때 class A{ A의 필드 } class B extends A{ B의 필드 } B b = new B(); b 객체는 실제로는 A의 필드, B의 필드 둘 다 가지고 있다. A : 부모 클래스, 슈퍼 클래스, Car B : 자식 클래스, 서브 클래스, SuperCar 2) 자식클래스 객체화 자식 클래스 생성자 호출시 자식 클래스의 객체는 자식 생성자를 호출하여 객체화를 진행한다. 메모리에 자식 클래스의 필드만 올라갔다면 자식 객체로 부모 클래스에 있는 필드에 절대 접근할 수 없다. 따라서 자식 생성자를 호출하게 되면 제일 처..

Back-End/JAVA 2021.05.27
반응형