freeseaboy 님의 멋있어 지려 노력하는 블로그

자바 기초(7) 추상스럽다 및 객체비교란?ㅋ 본문

컴퓨터 & 서버/Java

자바 기초(7) 추상스럽다 및 객체비교란?ㅋ

freeseaboy 2024. 11. 6. 23:17
반응형

자 3교시 자바 시간입니다..오늘은 좀 영상이 길어졌네요 ㅠㅠ

머리가 나빠서 이것저것 찾아보느라 ... 무튼!

오늘 추상스럽다 랑 인스턴스 비교 키워드를 알아보겠습니다..

재밌게 보고 어렵게 이해하시고 ㅋㅋㅋㅋ

그럼 바로 ㄱㄱㄱ

스크립밑~

!!!긴급!!!

알수없는 이유로 동영상이 차단되어 우회 대피소 

N기업 블로그로 링크 걸어 두었습니다.

https://blog.naver.com/iwseo7114/223649987458

 

자바 기초(7) 추상스럽다 및 객체비교란?ㅋ

자 3교시 자바 시간입니다..오늘은 좀 영상이 길어졌네요 ㅠㅠ 머리가 나빠서 이것저것 찾아보느라 ... 무...

blog.naver.com

package studyJava;

public class study241106 {
	public static void main(String argc[]) {
		Human absObj;
		Hako realHako = new Hako();
		Ryan realRyan = new Ryan();
		absObj = realRyan;
		absObj.eating();
		absObj.status();
		System.out.println("\n");
		absObj = realHako;
		absObj.sleeping();
		absObj.status();
		
		Hako realHakoA = (Hako)absObj;
		realHakoA.status();
		
		Human instHuman;
		Dummy instDummy = new Dummy();
		Hako instHako = new Hako();
		Ryan instRyan = new Ryan();
		instHuman = instDummy;
		
		if(instHuman instanceof Hako) {
			System.out.println("Yes Hako");
		}else if(instHuman instanceof Ryan){
			System.out.println("Yes Ryan");
		}else {
			System.out.println("No");
		}
		
		return;
	}
}
abstract class Human{
	public void eating() {
		System.out.println("Eating now");
		return;
	}
	public void sleeping() {
		System.out.println("Sleeping now");
		return;
	}
	public abstract void status();
}
class Hako extends Human{
	public void status() {
		System.out.println("Dreaming!!!");
		return;
	}
}
class Ryan extends Human{
	public void status() {
		System.out.println("Smile~");
		return;
	}
}
class Dummy extends Human{
	Dummy(){};
	public void status() {};
}

#######################################################################

자 안녕하세요 오늘은 자바 3교시 수업 시작합니다.

일단 오늘 저번에 이어 클래스 관련해서 계속

공부 및 리뷰 할예정이에요 ㅋㅋ

자 우리 오늘 뭐배울지는 노래 땡기고 시작하시즄

레츠곳!

★배울 내용

- 추상 클래스

- 상속,다운 캐스팅,instanceof

- java.lang.Object ?

- toString() ?

- equals() ?

정도가 되겠네요.ㅋ

시작!~!

추상클래스란 Abstarct Class AC라네요..

즉 객체가 아니라 타입으로만 존재하고

추상 메소드를 선언하고 사용은 상속으로

재정의해야 한다..

일단 객체 생성 X 오로지 부모 클래스로만 존재

abstract [class]

abstract [method]

이렇게 두가지가 되고

추상 클래스 안에

추상 메소드를 가지는 클래스는 반드시 추상클래스로

작성 되어야 됨

용도

- 객체를 생성하지는 않으나 변수 선언 용도로 사용됩니다. (오케 만들었어 근데 어디다 쓰냐?ㅋ)

- 상속의 고유 기능인 하위 클래스에 같은 데이터와 기능을 가지도록 물려주는 기능

일반 메소드는 자동상속

추상 메소드는 무조건 상속

즉...

추상 클래스는 강제성이 있는 부분에 매력이 있다고 보면된다 ㅋㅋㅋㅋㅋ어이없네.

어찌되었든.

고정 기능이랑 동적인 기능이 추상 클래스의 탄생 이유라고 보면될듯.

즉 이거죠..예를들면.

사실 상속이랑 추상클래스랑 비슷해요..다만 강제성 차이고

솔직히 타입이라 뭐라 이건 모르겠고.

정확한건 예를들어...상속에서 추상클래스에 추상메소드를 따라하려면

오버라이딩 하면 되거든요?근데 불필요한 부모 클래스안에 메소드를 의미없이 구현해야되요..

그리고그걸 상속해서 자식에서 다시 오버라이딩 하면 추상클래스 추상 메소드 처럼 만들순 있어요..

그차이에요..

우리가 사람을 만든다고 해볼게요..

여기서 공통인거 뭐죠?

동작동사 ㅋㅋㅋㅋ

상태동사 ㅋㅋㅋㅋ

사람으로 치면 동작동사 뭐가있죠? 달린다 먹는다 이런거 있죠???ㅋㅋㅋ

갑자기 영어를 접목시키다니 ㅋㅋㅋ미친 ㅋㅋㅋ

어찌되었든

상태동사 = 생각 이거에요...

동작동사 = 달린다 먹는다

여기서 추상클래스로 비유하면...기본적으로

상태동사는 자식클래스 즉 추상메소드로 만들어서 각자 알아서 내용을 채우고

고정인 동작동사 같은 무조건 공통것들은 이제 추상클래스 안에 일반 메소드로 만들어서

활용하는 용도라고 보면 거의 90이상 왜 쓰는지 이해가 된거라고 보면 될듯해요

맞나요?ㅋㅋ하 답답한게

이런거를 무조건 책에서 뭐 은행 뭐 게임 뭐 어쩌구저쩌구 어지러운 긴 코드로 보여주는

이런거 진짜 별로에요 ..그냥 개념을 확실하게 길더라도 이해시키는 말로

녹여내고 그거를 이해하고 그다음에 자기가 생각해서 내가 이해한걸

개념으로 표현하고 그거를 다시 정리르해서 특정 어떤 어쩌구하고

그다음 코드로 자기가 스스로 이해한걸 대입해보고 짜보고 이래야지..

무슨..ㅡㅡㅋ

동작 과 상태를 추상클래스로 만들어서 해볼게요

하코 랑 라이언 이 있다고해봐 예를 추상클래스로 설계를 하고

자식으로 최종 모형을 만들어 볼게요.

너무 디테일은 안할게요..일단..

얘들은 사람이죠?

그럼 동작 하는거 두가지만 넣어보죠

먹어야죠? 자다... 그리고

- 먹다

- 자다

다음 상태동사 꿈을꾸다 혹은 웃다..

- 라이언은 웃다

- 하코는 꿈을꾸다

이렇게해서 만들어볼게요..

이게 바로 추상클래스를 사용하는 몇억가지 이유는 최소 몇천만입니다 ㅋ

instanceof 객체 포함 여부 확인

즉 A instanceof B 는 A가 B타입에 속하는지.

확인하는 키워드

자 오늘 instanceof 랑 추상클래스 및 메소드 알아보고

활용하는 예제까지 해봤어요 ㅋㅋㅋ아주 재밌죠?는 구라지 ㅡㅡㅋ

무튼 고생했고 시간 관계상 거의 1시간30분 순삭이여서

더 진행을 ㅋㅋ저도 자야하기때문 ㅋ무튼 고생했고

또 조만간 이어서 진행할게요...아직도 진도 1.5%해써요 98.5%남음

그리고 다끝나면 또다시 다른java책으로 첨부터는 아니고 애매한것들

집중적으로 또 공부할테니 너무 조급해 하지마셈..

책값좀 ㅠㅋ

ㅅㄱ링

#######################################################################

자바

 

반응형