Dev log - 49, Java #4

박강산·2022년 6월 14일
0

Java 문법

다형성(polymorphism)

  • 하나의 객체가 여러 가지 타입을 가질 수 있는 것
Manager 는 Employee 의 상속 관계

Employee 에는 a(), b() 객체

Manager 에는 b(), c() 객체

호출 시,

Employee e = new Manager();

e.a(); 가능
e.c(); 가능
e.b(); 불가능

e.b() 를 가능하게 하려면
Manager m=(Manager)e;
m.b(); 으로 가능

메소드 오버로딩(method overloading)

  • 똑같은 이름의 메소드를 중복하여 정의하는 것

  • 정상적으로는 같은 이름의 메소드는 불가능하지만, 매개변수의 개수나 타입(=값, argument)을 다르게 하면 가능.

  • println(), display() 등의 메소드가 대표적인 예

Object 클래스

  • 모든 자바 클래스의 최상위 부모 클래스, 모든 클래스는 extends Object 를 포함하고 있음

  • 자바의 모든 클래스는 Object 클래스의 모든 메소드를 바로 사용할 수 있음

  • 대표적인 메소드로 toString(), equals(), clone() 등이 있음

equals() 메소드

  • boolean equals(Object obj) {} 의 내용을 함축시킨 것

  • == 과 같은 값을 반환하는데, 메소드이기에 오버라이딩이 가능하다는 차이점이 있음

  • 같은 값을 가지고 있는 객체끼리의 비교는 각각 가지고 있는 주소 값이 다르기 때문에, 항상 false를 반환

객체명 e1 = new 객체명("ㅁㄴㅇㄹ")
객체명 e2 = new 객체명("ㅁㄴㅇㄹ")

if (e2.equals(e1)) {
	System.out.println("true");
} else {
	System.out.println("false");
}

= false 반환
  • String 타입의 객체는 equals() 메소드가 String 타입에 맞게 오버라이딩 됨
String e1 = new String("ㅁㄴㅇㄹ")
String e2 = new String("ㅁㄴㅇㄹ")

if (e2.equals(e1)) {
	System.out.println("true");
} else {
	System.out.println("false");
}

= true 반환
  • 상속 관계에서 부모객체인지 자식객체인지 확인하기 위해, 객체 타입을 확인하는 연산자인 instanceof 을 사용

  • 객체(부모) + instanceof + 클래스(자식), (여기선 객체끼리의 비교)

  • 여러 개의 객체의 값을 한번에 비교하려면, 각각의 클래스마다 equals() 메소드를 오버라이딩 해줘야함

profile
안녕하세요. 맡은 업무를 확실하게 수행하는 웹 개발자가 되기 위하여 끊임없이 학습에 정진하겠습니다.

0개의 댓글

관련 채용 정보