[JAVA] 알아두면 좋은 것

Chan·2023년 11월 8일
0

JAVA

목록 보기
5/6

추상 클래스와 인터페이스의 차이?

  • 추상 클래스는 클래스들의 공통된 본질을 구현(건물 기초 설계도)
  • 인터페이스는 추가하고자 하는 기능만을 구현(특수 기능)

오버로딩과 오버라이딩의 차이?

오버로딩은 한 클래스 내에서 같은 이름으로 다른 메소드를 만듦

  • 메소드의 파라미터 타입이 다르거나, 갯수가 달라야함
  • 상속과 관련 없음

일부 코드로 예시를 보자

public class Ex {
	public int add(int a,int b) {
		return a + b;
	}
    
	public double add(double a, double b) {		//파라미터 타입이 다름
    	return a + b;
    }
}

오버라이딩은 상속 받은 클래스 내에서 입맛에 맞게 변경하는 것

  • 슈퍼 클래스의 메소드와 서브 클래스의 파라미터와 반환값까지 일치해야함.
    내용만 다름
public class Unit {
	int hp = 0;
    
	public void printUnit(int hp) {
    	System.out.println("기초 유닛입니다");
            	System.out.println("HP" + hp);
    }
}

class Npc extends Unit {		//상속 받고, 
	int hp = 100;
    
	public void printNpc(int hp) {		//파라미터 타입, 갯수 모두 일치
    	System.out.println("Npc 유닛입니다");
            	System.out.println("HP" + hp);
    }
}

오버로딩과 오버라이딩 둘 다 다형성을 구현한다는 점은 공통점임


문자열 메소드 equals, compareTo 차이?

얘네는 모두 단순 값을 비교함
equals(): 같다, 다르다만 비교
compareTo(): 작다, 같다, 다르다

문자열 변수 참조 비교

String str1 = new String("java");
String str2 = new String("java");
String str3 = "java";
String str4 = "java";

str1 == str2는 false

  • 얘네는 객체 참조여서 주소 비교

str3 == str4는 True

  • 얘네는 리터럴이므로 값 비교. 같은 리터럴 테이블 공유
profile
💻

0개의 댓글