카테고리 없음

32. JAVA 예제 정리 [라이브러리]

woogy99 2024. 12. 19. 17:43

package com.sist.lib;

 

/*

1. 모든 클래스에 상속을 내린다ㅏ.

2. Object는 가장 큰 데이터형 => 모든 데이터 값을 받을 수 있다.

3. 모든 객체가 사용할 수 있는 기능을 제공

4. java.lang => Object외에 다른 클래스는 final이다

-------------------

상속을 받아서 변경이 불가능

 

5. Object

------

finalize()/clone()/toString()/hashCode()/equals()

-------------------------------------------------

 

상속

---

| 상위 클래스는 하위 클래스에 추가된 메소드, 변수는 접근이 불가능

=> 오버라이딩된 변수 / 메소드만 사용이 가능

 

toString() : 문자열 변환 / 객체의 정보 확인

---------- 멤버변수 확인 => 오버라이딩

--------

상위 클래스로 객체를 선언

=> 오버라이딩된 메소드 호출이 가능

 

 

class A

class B extends A

 

A a=new B() => 동적 바인딩

-------

A가 가지고 있는 메소드 => 오버라이딩된 메소드 호출

----- 주소

-A가 가지고 있는 변수 : 주소가 없다

 

*일반 변수는 주소가 없고 / 메소드는 주소가 있음

=> 정적 바인딩

*/

 

import java.awt.event.*;

 

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

 

public class 라이브러리_Object_1 extends JFrame implements ItemListener {

JComboBox box = new JComboBox();

JLabel la = new JLabel();

 

public 라이브러리_Object_1() {

 

box.addItem("홍길동:남자");

box.addItem("심청이:여자");

box.addItem("이소룡:남자");

box.addItem("김영희:여자");

 

setLayout(null);

 

box.setBounds(10, 15, 100, 35);

add(box);

 

la.setBounds(10, 100, 300, 35);

add(la);

 

setSize(400, 200);

setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE);

// Object는 출력은 가능 => 문자열 제어 불가능

// => Object => 매개변수 , Object => 리턴형

// 사용시에는 반드시 형변환

box.addItemListener(this);

 

}

 

public static void main(String[] args) {

new 라이브러리_Object_1();

}

 

@Override

public void itemStateChanged(ItemEvent e) {

// TODO Auto-generated method stub

if (e.getSource() == box) {

// Object obj=box.getSelectedItem();

 

// String obj=(String)box.getSelectedItem(); =같은거임

// String obj = box.getSelectedItem().toString();

// String[] datas = obj.split(":");

//

// la.setText("이름:" + datas[0] + ",성별:" + datas[1]);

}

}

}

 

 

package com.sist.lib;

/*

finalize() => 소멸자 함수 => 객체가 메모리에서 해제 => 자동 호출

 

*/

 

class Sawon // extends Object 모든 클래스는 Object를 상속하고 있음

{

 

private int sabun;

private String name;

 

public Sawon() {

sabun = 1;

name = "홍길동";

System.out.println("객체 생성 = 초기화 완료");

 

}

 

public void print() {

System.out.println("사번 : " + sabun);

System.out.println("이름 : " + name);

}

 

@Override

protected void finalize() throws Throwable {

// TODO Auto-generated method stub

System.out.println("사원 객체 소멸: Heap에서 사라진다");

}

 

// 소멸 여부 확인

 

}

 

public class 라이브러리_Object_2 {

 

public static void main(String[] args) {

Sawon sa = new Sawon();

sa.print();

sa = null;

// 직접 해제

System.gc(); // 가비지 컬렉션 호출

 

 

}

}

 

 

package com.sist.lib;

/*

객체 복제

= 같은 메모리 주소 사용 (같이 사용) => 얕은 복사

A a=new A()

A b=a => 주소 참조

 

= 다른 메모리 주소 사용 (따라 사용 ) => 깊은 복사

A a=new A()

A b=a.clone() => 새로운 메모리 생성

 

*/

 

class Member {

 

private int mno;

private String name;

 

public Member(int mno, String name) {

this.mno = mno;

this.name = name;

}

 

public int getMno() {

return mno;

}

 

public void setMno(int mno) {

this.mno = mno;

}

 

public String getName() {

return name;

}

 

public void setName(String name) {

this.name = name;

}

 

// 메모리를 통째로 복사해서 새로운 메모리에 저장

// 스프링 => prototype

// 디자인패턴 => prototype 패턴

// GOF패턴 => 23가지

// 8=> 컴바운드패턴

 

@Override

protected Object clone() throws CloneNotSupportedException {

return super.clone();

}

// 오버라이딩 => clone() => 재정의

 

public void print() {

System.out.println("회원번호:" + mno);

System.out.println("이름:" + name);

 

}

 

 

}

 

public class 라이브러리_Object_3 {

public static void main(String[] args) throws Exception{

// 얕은 복사 => 두개의 객체를 한개 주소에서 처리

Member m1 = new Member(1, "홍길동");

// m1.print();

// Member m2 = m1;

// m2.print();

// m2.setMno(3);

// m2.setName("박문수");

// m2.print();

// m1.print();

// // 객체가 가지고 있는 주소가 같으면 => 같은 메모리를 제어

// System.out.println("m1:"+m1);

// System.out.println("m2:"+m2);

//

 

Member m2=(Member)m1.clone();

m2.print();

System.out.println("m1:"+m1);

System.out.println("m2:"+m2);

m2.setMno(3);

m2.setName("박문수");

m2.print();

}

}

 

 

package com.sist.lib;

 

class Sawon2 {

private int sabun;

private String name;

 

public int getSabun() {

return sabun;

}

 

public void setSabun(int sabun) {

this.sabun = sabun;

}

 

public String getName() {

return name;

}

 

public void setName(String name) {

this.name = name;

}

 

// 초기화

public Sawon2(int sabun, String n) {

this.sabun = sabun;

name = n;

 

}

 

@Override

public boolean equals(Object obj) {

// TODO Auto-generated method stub

Sawon2 s=(Sawon2)obj;

return name.equals(s.name)&& sabun==s.sabun;

}

 

}

 

public class 라이브러리_Object_4_1 {

public static void main(String[] args) {

Sawon2 s1 = new Sawon2(1, "홍길동");

Sawon2 s2 = new Sawon2(1, "홍길동");

// equals 재정의가 없는 경우 => 주소비교

// equals 재정의할 경우 => String 비교

if (s1.equals(s2)) {

System.out.println("같은 사원입니다.");

} else {

System.out.println("다른 사원입니다.");

}

}

}

 

 

package com.sist.lib;

/*

equals() => Object에서 객체 비교

String => equals() 문자열 비교 => 오버라이딩

 

*/

 

class Human{

String name;

 

public String getName() {

return name;

}

 

public void setName(String name) {

this.name = name;

}

public Human(String n) {

name=n;

}

 

@Override

public boolean equals(Object obj) {

// TODO Auto-generated method stub

if(obj instanceof Human) {

Human s=(Human)obj;

return name==s.name;

}else

{

return false;

}

 

 

}

 

 

}

 

public class 라이브러리_Object_4 {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

Human h1=new Human("홍길동");

Human h2=new Human("홍길동");

 

if(h1.equals(h2)) {

System.out.println("같다");

}else {

System.out.println("다르다");

}

 

 

 

}

 

}

 

 

package com.sist.lib;

 

import java.util.ArrayList;

 

class Movie {

 

private int mno;

private String title;

 

public int getMno() {

return mno;

}

 

public void setMno(int mno) {

this.mno = mno;

}

 

public String getTitle() {

return title;

}

 

public void setTitle(String title) {

this.title = title;

}

 

public Movie(int mno, String title) {

this.mno=mno;

this.title=title;

}

 

}

 

public class 라이브러리_Object_5_1 {

public static void main(String[] args) {

//

// ArrayList<Movie> list=new ArrayList<Movie>();

// list.add(new Movie(1,"홍길동전"));

// list.add(new Movie(2,"심청전"));

//

// Movie m1=(Movie)list.get(0);

 

Movie m1=new Movie(1,"홍길동전");

System.out.println(m1.getClass()); //데이터형

String s="";

System.out.println(s.getClass());

}

}

 

 

package com.sist.lib;

 

/*

 

*/

 

import java.util.Objects;

 

 

class Member2 {

private int mno;

private String name;

 

public int getMno() {

return mno;

}

 

public void setMno(int mno) {

this.mno = mno;

}

 

public String getName() {

return name;

}

 

public void setName(String name) {

this.name = name;

}

 

// 초기화

public Member2(int mno, String name) {

 

this.mno = mno;

this.name = name;

}

 

public void print() {

System.out.println("회원번호:" + mno);

System.out.println("이름:" + name);

}

 

@Override

public int hashCode() {

return Objects.hash(mno, name);

}

 

 

}

 

public class 라이브러리_Object_5 {

public static void main(String[] args) {

Member2 m1 = new Member2(1, "박문수");

Member2 m2 = new Member2(1, "박문수");

 

System.out.println(m1);

System.out.println(m2);

 

 

System.out.println(m1.hashCode());

System.out.println(m2.hashCode());

 

if(m1==m2) {

System.out.println("같다");

}else {

System.out.println("다르다");

}

 

}

}