반응형
package object;
class Student {
int studentNum;
String studentName;
public Student(int studentNum, String studentName) {
this.studentName = studentName;
this.studentNum = studentNum;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Student) {
Student std = (Student) obj;
return (this.studentNum == std.studentNum);
}
return false;
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return studentNum;
}
}
public class EqualsTest {
public static void main(String[] args) {
// String str1 = new String("abc");
// String str2 = new String("abc");
//
// System.out.println(str1 == str2);
// System.out.println(str1.equals(str2));
Student Lee = new Student(100, "이순신");
Student Shin = new Student(100, "이순신");
Student Lee2 = Lee;
System.out.println(Lee.hashCode());
System.out.println(Lee == Shin);
System.out.println(Lee.equals(Shin));
/*
* 2046562095 false true
*
*/
// 두 객체가 같다고 표현하고 싶을때, 두 해쉬코드 값도 같다고 해줘야한다.
Integer i1 = new Integer(100);
Integer i2 = new Integer(100);
System.out.println(i1.equals(i2));
/*
* 100 false true true
*
*/
}
}
45. Object 클래스 - 3, 46. Class클래스 - 04. Class 클래스
| clone() 메서드
객체의 복사본을 만듦
기본틀( prototype) 으로 부터 같은 속성값을 가진 객체의 복사본을 생성할 수 있음
객체 지향 프로그래밍의 정보 은닉에 위배되는 가능성이 있으므로 복제할 객체는 cloneable 인터페이스를 명시해야함.
|finalize() 힙에서 제거될때 불러지는 값
package object;
class Book implements Cloneable{
String title;
String author;
public Book(String title, String author) {
this.title = title;
this.author = author;
}
@Override
public String toString() {
return author + "," +title;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
protected void finalize() throws Throwable {
// TODO Auto-generated method stub
super.finalize();
}
}
public class ToStringTest {
public static void main(String[] args) throws CloneNotSupportedException {
Book book = new Book("토지", "나목");
System.out.println(book);
Book book2 = (Book)book.clone();
System.out.println(book2);
}
}
| Class 클래스
자바의 모든 클래스와 인터페이스는 컴파일 후 class 파일로 생성됨
class 파일에는 객체의 정보( 멤버변수, 메서드, 생성자 등) 가 포함되어있음
class 클래스는 컴파일 된 class 파일에서 객체의 정보를 가져올 수 이씀
| reflection 프로그래밍
class 클래스로부터 객체의 정보를 가져와 프로그래밍하는 방식
로컬에 객체가 없고 자료형을 알 수 없는 경우, 유용한 프로그래밍
java.lang.relfect 패키지에 있는 클래스 활용
package classex;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class StringClassTest {
public static void main(String[] args) throws ClassNotFoundException {
Class c3 = Class.forName("java.lang.String"); //자바의 동적로딩
Constructor[] cons = c3.getConstructors();
for(Constructor con: cons) {
System.out.println(con);
}
System.out.println();
Method[] methods = c3.getMethods();
for(Method method : methods) {
System.out.println(method);
}
}
}
package classex;
public class Person {
private String name;
private int age;
public Person() {};
public Person(String name) {
this.name = name;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return name;
}
}
자바 인강이 듣고 싶다면 =>https://bit.ly/3ilMbIO
반응형
'스프링, 자바' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 35회차 미션 (0) | 2020.09.13 |
---|---|
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 34회차 미션 (0) | 2020.09.12 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 32회차 미션 (0) | 2020.09.10 |
09. 운영체제 구조 - 사용자 모드와 커널 모드 (0) | 2020.09.09 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 31회차 미션 (0) | 2020.09.09 |