복습
자기 클래스 안에서만 사용 할 수 있거나 자기 패키지 안에서만 사용 할 수 있거나 타패키지에있어도 자기 패키지에 상속받은 하위클래스에서 사용할수있거나 누구나 사용할 수 있거나 네가지의 접근 제어자를 통해서 사용
헤더 -> 함수의 특징 (시그니처)
input, output, 접근영역
static 인스턴스를 만들 필요없이 class.함수(); 로 실행 가능
클래스만의 함수로 사용 가능
변수에도 static을 집어 넣을 수 있음
static을 변수에 넣으면 모든 인스턴스 변수들이 클래스변수로서 작용할 수 있음
한번식 독서기록장을 업데이트 할 때 마다 인스턴스 필드를 넘겨주고 그 값은 계속해서 book이라는 클래스가 공유
재사용성을 확장시키기 위한 개념
똑같은 규격으로 input과 output
상속 받는 하위클래스마다 조금씩 달라질 때 interface라는 추상적인 개념으로 부모클래스를 만듦
최대한 추상적인 방식으로 규격을 맞춰줌
말 그대로 참고로 해서 만들기 위한 점검표
뭔가를 작성하지 않으면 디폴트가 기본제어자
퍼블릭으로 기본접근제어자가 설정 됨
상속을 시킬 때 상속을 하고나면 하위클래스에서 기존에 부모ㅡㄹ래스에서 있떤 함수들을 오버라이딩해서 자기들의 방식대로 사용
부모클래스에서 내가 만든대로 밑에 있는 클래스들에도 다 넘겨주고싶다면 final이라는 명령어를 사용해서
상속받은 클래스가 새로 우리가 만들어 놓은 실행문에 변경을 가할 수 없도록 여러개의 다양한 제어자
// 1. 동물원
// Zoo - 관리자
// animalNum, zooKeeperNum -> 멤버 변수
// animalIn(), zooKeeperIn()
// animalOut(), zooKeeperOut()
// Animal -> abstact class, 구상 클래스, interface
// bark() -> ~~가 짖습니다
// bark(String ) -> ~~가 ~~라고 짖습니다.
// eat() -> 초식/육식/잡식
// poop() -> final
// Zookeeper - 사육사
// feed(), play() - 놀아줍니다
animal.java
package zooEx;
public abstract class Animal extends Zoo {
String name = "";
String foodHabit = "";
Animal(String name, String habbit) {
this.name = name;
this.foodHabit = habbit;
super.animalIn();
}
public void bark() {
System.out.println(this.name + "가 짖습니다.");
};
public void bark(String comment) {
System.out.println(this.name + "가 " + comment + "라고 짖습니다.");
};
public void eat() {
System.out.println(this.name + "은 " + this.foodHabit + " 동물입니다.");
}
public final void poop() {
System.out.println(this.name + "가 배설합니다.");
};
}
zoo.java
package zooEx;
public class Zoo {
static int animalNum = 0; // 동물원에 있는 동물의 수
static int zooKeeperNum = 0; // 동물원의 사육사 수
// 동물이 동물원에 들어올 때 호출되는 메소드
public void animalIn() {
animalNum++;
System.out.println("동물이 동물원에 들어왔습니다. 현재 동물 수: " + animalNum);
}
// 동물이 동물원에서 나갈 때 호출되는 메소드
public void animalOut() {
if (animalNum > 0) {
animalNum--;
System.out.println("동물이 동물원에서 나갔습니다. 현재 동물 수: " + animalNum);
} else {
System.out.println("더 이상 나갈 동물이 없습니다.");
}
}
// 사육사가 동물원에 들어올 때 호출되는 메소드
public void zooKeeperIn() {
zooKeeperNum++;
System.out.println("사육사가 동물원에 들어왔습니다. 현재 사육사 수: " + zooKeeperNum);
}
// 사육사가 동물원에서 나갈 때 호출되는 메소드
public void zooKeeperOut() {
if (zooKeeperNum > 0) {
zooKeeperNum--;
System.out.println("사육사가 동물원에서 나갔습니다. 현재 사육사 수: " + zooKeeperNum);
} else {
System.out.println("더 이상 나갈 사육사가 없습니다.");
}
}
}
/*
//1. 동물원
//Zoo - 관리자
//animalNum, zooKeeperNum -> 멤버 변수
//animalIn(), zooKeeperIn()
//animalOut(), zooKeeperOut()
//Animal -> abstact class, 구상 클래스, interface
//bark() -> ~~가 짖습니다
//bark(String ) -> ~~가 ~~라고 짖습니다.
//eat() -> 초식/육식/잡식
//poop() -> final
//Zookeeper - 사육사
//feed(), play() - 놀아줍니다
*/
zookepper.java
package zooEx;
public class Zookeeper extends Zoo{
String name = "";
Zookeeper(String name) {
this.name = name;
super.zooKeeperIn();
}
public void feed(NewAnimal animal) {
System.out.println(name + "가 " + animal.name + "한테 읍식을 줍니다.");
}
public void play(NewAnimal animal) {
System.out.println(name + "가 " + animal.name + "를 놀아줍니다.");
}
}
zooTest.java
package zooEx;
public class ZooTest {
public static void main(String[] args) {
NewAnimal lion = new NewAnimal("사자", "육식");
System.out.println(lion.name);
System.out.println(lion.foodHabit);
lion.bark();
lion.bark("하이");
lion.eat();
lion.poop();
DelAnimal(lion);
System.out.println("------------------------------");
NewAnimal tiger = new NewAnimal("호랑이", "육식");
System.out.println(tiger.name);
System.out.println("------------------------------");
NewZookeeper keeper1 = new NewZookeeper("keeper1");
keeper1.play(tiger);
keeper1.feed(tiger);
System.out.println("------------------------------");
NewZookeeper keeper2 = new NewZookeeper("keeper2");
System.out.println("------------------------------");
DelKeeper(keeper1);
DelKeeper(keeper2);
}
public static NewAnimal DelAnimal(NewAnimal animal) {
animal.animalOut();
animal = null;
return animal;
}
public static NewZookeeper DelKeeper(NewZookeeper keeper) {
keeper.zooKeeperOut();
keeper = null;
return keeper;
}
}
class NewAnimal extends Animal {
NewAnimal(String name, String habit) {
super(name, habit);
}
}
class NewZookeeper extends Zookeeper {
NewZookeeper(String name) {
super(name);
}
}
print했을 때 글자가 깨진다면
인코딩문제.
file안에 a.txt가 ms.949로 되어있을 확률이 있음
Preferences - > Spelling -> window-949x UTF-8 후 저장
새로 다시 작성하면 문제 없이 실행가능
'Study Language > Java' 카테고리의 다른 글
| 우리FISA AI엔지니어링 - JAVA - lambda, spring, git협업 (0) | 2024.01.15 |
|---|---|
| 우리FISA AI엔지니어링 - JAVA 2 (1) | 2024.01.08 |
| 우리 FISA AI엔지니어링 - JAVA 1 (1) | 2024.01.05 |