공부의 기록/자바 풀 스택 : 수업내용정리

자바 풀 스택 12/19 오후 기록 021-2

파티피플지선 2024. 12. 19. 17:50

<14:30 5교시>

추상클래스를 상속받은 클래스를 클래스의 이너클래스, 메소드의 이너클래스 로 만들어보기

 

 

 

내 삽질

더보기

 

package test.main;

import test.mypac.Weapon;

public class MainClass04 {
	public static void main(String[] args) {
		//아래의 useWeapon() 메소드를 호출하려면 Weapon type의 참조값이 필요함
		//아래의 메소드를 호출했을 때 "바다에 있는 적들을 공격"하려면 여기에서 어떻게 코딩해야 할까
	
		Weapon w1 = new useWeapon();
		MainClass04.useWeapon(w1);
		}
	public static void useWeapon(Weapon w) {
		w.prepare();
		w.attack();
	}
	public static class useWeapon extends Weapon {
		@Override
		public void attack() {
			System.out.println("바다에 있는 적 공격");
		}
	}
}

 

 

package test.main;

import test.mypac.Weapon;

public class MainClass04 {
	
	static class useWeapon extends Weapon {
		@Override
		public void attack() {
			System.out.println("바다에 있는 적 공격");
		}
	}
	public static void main(String[] args) {
		//아래의 useWeapon() 메소드를 호출하려면 Weapon type의 참조값이 필요함
		//아래의 메소드를 호출했을 때 "바다에 있는 적들을 공격"하려면 여기에서 어떻게 코딩해야 할까
	
		Weapon w1 = new useWeapon();
		MainClass04.useWeapon(w1);
		class SpaceWeapon extends Weapon{

			@Override
			public void attack() {
				System.out.println("우주에 있는 적 공격");				
			}	
		}
		
		useWeapon(new SpaceWeapon());
		}
		
	public static void useWeapon(Weapon w) {
		w.prepare();
		w.attack();
	}

}

이번 시간 너무 졸렸다. 살쪄서 그런가!! 낼부턴 좀 적게 먹을까.

 

 

<15:30 6교시>

쉬는 시간에 눈이랑 관자놀이 목이랑 턱 마사지 해서 좀 깼다. 운동을 하긴 해야겠다 정말

 

 

패스워드에 입력할 토큰 만들러 가는 길(토큰은 한 번 받으면 잊어먹으면 안된다)

프로필> Settings >Developer Settings > Personal access Tokens 들어와서 Generate new Token하면 됨.

 

 

 

 

집에서 클론 파일 내려받기 : 내려받을 폴더에서 Shift 마우스 우클릭 > Git Bash 실행

acorn@BOOK-2B7PDQ538V MINGW64 ~/Desktop/MyHome/playground
$ git clone https://github.com/CrystalJiSeon/javapractice.git
Cloning into 'javapractice'...
remote: Enumerating objects: 155, done.
remote: Counting objects: 100% (155/155), done.
remote: Compressing objects: 100% (114/114), done.
remote: Total 155 (delta 16), reused 155 (delta 16), pack-reused 0 (from 0)
Receiving objects: 100% (155/155), 41.79 KiB | 6.96 MiB/s, done.
Resolving deltas: 100% (16/16), done.

acorn@BOOK-2B7PDQ538V MINGW64 ~/Desktop/MyHome/playground
$

 

 

 

집에서 한 컴퓨터에서 두개의 이클립스 실행하기 : 버전이 다른 두개를 받는다

 

학원에서 두 개의 이클립스를 돌리면서 하나는 학원에서 학습하는 환경 용도로,

다른 하나는 집 환경에서 하는 흉내를 내는 용도로 사용하고자 함.

 

 

<16:30 7교시>

Git환경에서 add existing Git folder인가 이거 눌러서 아까 Git Bash로 만들어 놓은 클론을 가져올 수도 있고,

Git Bash로 클론을 만들지 않았다면 이클립스 Git 환경에서 바로 추가해서 인식까지 할 수 있다.

마우스 우클릭 눌러서 import projects 누르면 .gitignore로 안 가져오는 바람에 기능을 못해서 자바환경에서 안 보이던 폴더들이 보인다.

 

개별 폴더를 import 할 필요 없이 일괄 import도 가능하더라.

import with existing project 어쩌구는 모르겠어서 일단 import with general 어쩌구를 선택했다.

앞으로 기능에 이상이 없기를 바라며 봤는데 일단 Github와 연동도 잘 돼 있는거 같고 큰 문제는 없어보인다.

 

 

아무튼 이제 아까 5교시때 하던걸로 돌아옴

package test.main;

import test.mypac.Weapon;

public class MainClass05 {
	public static void main(String[] args) {
		//익명의 inner class를 이용해서 Weapon type의 참조값을 얻어내서 변수에 담은 다음
		Weapon w1 = new Weapon() {
			@Override
			public void attack() {
				System.out.println("아무 곳이나 공격");
			}
		};
		//중괄호는 Class이지만 이름은 없는 익명의 클래스가 생성된다.
		//Weapon w1=new Weapon() Weapon{}클래스를 상속 받은 익명의 Class라고 할 수 있다.
		
		//메소드 호출하면서 전달하기
		useWeapon(w1);
		//메소드 호출하면서 즉석에서 Weapon type의 참조값을 얻어서 전달하기
		useWeapon(new Weapon() {
			@Override
			public void attack() {
				// TODO Auto-generated method stub
			}
		});
		
	}
	
	public static void useWeapon(Weapon w) {
		w.prepare();
		w.attack();

	}
	
}

아 내가 아까 했던게 오류가 이제 들통났다.

히스토리 다 사라진줄알아서 망했네 했는데

???

히스토리 다 들어옴

음 뭐지 merge도 해냈음

신기하네

몇 번 더 해봐야겠네

 

근데 오류가 하나 있던데 이건 아마 버전이 달라서 그런가보네.

 

 

 

Interface 시작만 하고 끝남.

package test.mypac;
/*
 * [interface]
 * - 생성자가 없다(단독 객체 생성불가)
 * - 추상메소드 혹은 디폴트 메소드를 가질 수 있다
 * - 필드는 static final 상수만 가질 수 있다
 * - 데이터타입의 역할을 할 수 있다
 * - interface type의 참조값이 필요하면 구현(implements) 클래스를 만들어서 객체를 생성해야 한다
 * - 클래스 상속은 단일 상속이지만, 인터페이스는 다중 구현이 가능하다
 */
public interface Remocon {
/* 
 * 필드도 가질수 있지만 스태틱 파이널만 가능하다
 * static : static 영역에 리모콘 인터페이스와 같이 만들어진다
 * final: 값이 결정된 이후에 변경 불가능(상수화 시킨다)
 * 생략 가능
 */
	public static final String COMPANY="LG";// final 상수는 관례상 필드명을 모두 대문자로

	//미완성의 추상 메소드를 멤버로 가질 수 있다.
	public void up();
	public void down();
}
package test.mypac;
//인터페이스는 implements 해야 한다
public class MyRemocon implements Remocon {

	@Override
	public void up() {
		System.out.println("볼륨을 올려");
		
	}

	@Override
	public void down() {
		System.out.println("볼륨을 내려");
	
	}

}

 

<17:30 8교시>

오늘 배운거 각자 실습

나는 교재 보면서 놓친 부분 있나 확인하려고 함