티스토리 뷰

반응형

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

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함