1)object: 모든 클래스의 grandfather!!
class O { } =class O extends Object { } 모든클래스는 암시적으로 상속받고 있는것이다
2)toString - 객체를 문자로 표현
toString은 말 그대로 객체의 정보를 String(문자열)형으로 형변환 해준다

그럼 값을 내가 원하는대로 하고싶다면? 오버라이딩ㄱㄱ

오브젝트 멤버인 toString을 오버라이딩해서 값을 바꾸자

object의 멤버 toString = Calculator는 object의 자식이란 의미
3)equals - 객체와 객체가 같은지 비교

서로 다른 객체로 판단하고 있다 근데 필요에 따라 s1이랑 s2 내부적인 name변수값이 같은 객체라고 equals가 동작하도록 변경하자
오버라이딩ㄱㄱ ~
자식->부모: ★★★★★★★자식은 자신의 것을 감추고 부모행세가 가능하지만(자바가 알아서 형변환)
부모->자식: 부모는 자식의 것을 생성, 없던것을 만들어야해야해서 자식행세를 할 수가 없다★★★★★★★★ (명시적으로 형변환)
s2의 타입인 student 와 object obj의 데이터 타입인 object는 어떤관계? student의 부모가 object

--> object(부모) obj = s2(자식)
s2를 object 데이터 타입으로 하게 된다면 String name이라는 값에 접근할 수 없음 왜? object데이터타입에는 name의 멤버가 없다

object에서 student로 변환 할 수 없다고 뜬다
--> object라는 변수를 student라는 데이터 타입으로 변환시킬 필요가 있응
student s = obj; (오류발생)
student s = (student) obj; (오케이~)

한가지 더 TIp!!
1)객체와 객체 비교시 ->equals사용
2)원시데이터형 ( 자바가 기본적으로 제공하는 타입) -> byte, short, int , long, float, double, boolean, char
은 ==로 쓰자
equals를 제대로 구현하려면 hashcode오버라이딩해서 구현해야한다!!

자동으로 구현해주는 것이 있다!! hashcode는 아직어려워서 이정도 까지만 알아두장
'JAVA > ★객체지향' 카테고리의 다른 글
object/ clone (0) | 2023.03.14 |
---|---|
object / finalize(사용할일 거의 없음)+ 가비지컬렉션 설명 (0) | 2023.03.14 |
사용자 정의 예외(checked/ unchecked) (0) | 2023.03.13 |
예외의 여러가지 상황(checked/ unchecked) (0) | 2023.03.13 |
예외 만들기/(여러가지 예외들 설명)IllegalArgumentException //IllegalStateException ... (0) | 2023.03.13 |