★ Object 클래스는 모든 클래스의 최상위 클래스이다. ★
: 하나의 슈퍼 클래스를 확장해서 여러 개의 서브 클래스를 선언할 수 있음.
: 서브 클래스를 더욱 확장해서 새로운 서브 클래스를 생성하는 것도 가능.
: 하나의 서브 클래스가 여러 개의 슈퍼 클래스로부터 상속받을 수 없다.
Object 클래스의 주요 기능 메소드들.
1. to String()
: 객체의 정보를 소개하는 문자열을 리턴하는 기능
2. equals(Object obj)
: 전달받은 obj와 같은 객체인지 여부를 리턴
3. hashCode()
: 객체의 메모리 주소를 숫자로 리턴해 줌.(가상주소)
4. getClass()
: 클래스의 정보를 가지고 있는 객체를 리턴해줌.
5. wait() / notify() / notifyAll()
: Thread???????라는 문법에서 사용하는 기능.. <추후 수업>
** 2개 이상의 슈퍼 클래스로부터 상속받기 **
하나의 서브 클래스가 여러 개의 슈퍼 클래스로부터 상속을 받을 수 없다.
다중 상속은 인터페이스(interface)라는 메커니즘을 통하여 구현가능
import java.util.Random;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
//Object class : 모든 JAVA클래스의 부모 클래스(최상위 클래스)
//JAVA언어에 존재하는 모든 클래스는 extends의 명시여부와 상관없이
//무조건 Object 클래스를 상속받은 상태로 만들어짐.
Test t= new Test();
t.toString(); //개발자가 만들지 않은 기능메소드가 존재함.
//java의 객체라면 무조건 가지고 있어야할 기능을 미리 작성하여
// Object 라는 이름의 클래스를 만들어 놓았음..
//어떤 경우에도 이 기능들이 존재하도록 하기위해 자동 상속되도록 해놨음.
//Object 클래스의 주요 기능 메소드들.
//1. toString() - 객체의 정보를 소개하는 문자열을 리턴하는 기능
//2. equals(Object obj) - 전달받은 obj와 같은 객체인지 여부를 리턴
//3. hashCode() - 객체의 메모리 주소를 숫자로 리턴해 줌.(가상주소)
//4. getClass() - 클래스의 정보를 가지고 있는 객체를 리턴해줌.
//5. wait(), notify(), notifyAll() -Thread라는 문법에서 사용하는 기능..
//1. toString()
String s =t.toString();
System.out.println(s); //default 값: 클래스명@해시코드(자바객체주소)
t=new Test();
s=t.toString();
System.out.println(s);
Random rnd= new Random();
System.out.println(rnd.toString()); //패키지명.클래스명@해시코드 //java.util.Random@cac736f
//근데.toString()의 결과가 이상한 경우가 있음.
String str=new String("Hello");
System.out.println(str.toString()); // Hello
//String클래스는 .toString()의 기본기능을 개선하여 값을 보여주도록 했음.
//즉. override한 것임.
First f= new First();
System.out.println(f.toString()); //내 마음대로 소개글 변경: 10
//2.equals() : 같은 객체인지 비교하는 기능 메소드
Test t1 =new Test();
Test t2= new Test();
Test t3= t1;
System.out.println(t1.equals(t2)); //false
System.out.println(t1.equals(t3)); //true
//사실 위 기능메소드는 잘 안쓰기도 함. why? 비교연산자로 가능해서
System.out.println(t1==t2); //주소비교 false
System.out.println(t1==t3); //true
//근데 String 클래스의 equals()는 기본 기능과 다르게 동작함 -override했음.
String s1= new String("Hello");
String s2= new String("Hello");
System.out.println(s1==s2); //false 주소비교
System.out.println(s1.equals(s2)); //값비교 : true
//3.hashCode() -자바에서 사용하는 메모리주소
Test t5= new Test();
System.out.println(t5.toString());
int hc= t5.hashCode();
System.out.println(hc);
System.out.println(Integer.toHexString(hc));
//4.getClass() : 클래스 정보를 가진 Class객체 리턴
Test t6 =new Test();
Class c =t6.getClass();
System.out.println(c.getName());
System.out.println(c.getPackageName());
System.out.println(c.getSuperclass());
}
}
-------------------------------------------------------------------------------
public class Test {
int a= 10;
}
-------------------------------------------------------------------------------
public class First {
int num=10;
@Override
public String toString() {
// TODO Auto-generated method stub
return "내 마음대로 소개글 변경: " + num;
}
}
-------------------------------------------------------------------------------
'JAVA' 카테고리의 다른 글
Generic (0) | 2023.08.30 |
---|---|
예외처리: try-catch-finally, throws, throw (0) | 2023.07.15 |
인터페이스(Interface) (0) | 2023.07.15 |
추상클래스(abstract), 익명클래스 (0) | 2023.07.15 |
연산자(Operator) (0) | 2023.07.15 |