점프 투 자바(Java)/23년 1월
1월 17일(화) - 5장(객체지향)
C0MPAS
2023. 1. 17. 21:27
5장 - 객체지향 프로그래밍
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
5-6 생성자
class Animal {
String name;
void setName(String name) {
this.name = name;
}
}
class Dog extends Animal {
void sleep() {
System.out.println(this.name + " zzz");
}
}
class HouseDog extends Dog {
HouseDog(String name){
this.setName(name);
}
HouseDog(int type){
if(type == 1){
this.setName("yorkshire");
} else if(type==2){
this.setName("bulldog");
}
}
void sleep() {
System.out.println(this.name + " zzz in house");
}
void sleep(int hour) {
System.out.println(this.name + " zzz in house for " + hour + " hours");
}
}
public class Sample{
public static void main(String[] args) {
//HouseDog dog = new HouseDog("happy");
//System.out.println(dog.name);
HouseDog happy = new HouseDog("happy");
HouseDog yorkshire = new HouseDog(1);
System.out.println(happy.name);
System.out.println(yorkshire.name);
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
5-7 인터페이스
interface Predator{
String getFood();
}
class Animal{
String name;
void setName(String name){
this.name = name;
}
}
class Tiger extends Animal implements Predator{
public String getFood(){
return "apple";
}
}
class Lion extends Animal implements Predator{
public String getFood(){
return "banana";
}
}
class ZooKeeper{
public void feed(Predator predator){
System.out.println("feed "+predator.getFood());
}
}
public class Sample{
public static void main(String[] args) {
ZooKeeper zooKeeper = new ZooKeeper();
Tiger tiger = new Tiger();
Lion lion = new Lion();
zooKeeper.feed(tiger);
zooKeeper.feed(lion);
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
5-8 다형성
interface Predator{
String getFood();
}
interface Barkable{
void bark();
}
interface BarkablePredator extends Predator, Barkable{
}
class Animal {
String name;
void setName(String name) {
this.name = name;
}
}
class Tiger extends Animal implements Predator, Barkable{
public String getFood(){
return "apple";
}
public void bark(){
System.out.println("어흥");
}
}
class Lion extends Animal implements BarkablePredator{
public String getFood(){
return "banana";
}
public void bark(){
System.out.println("으르렁");
}
}
class ZooKeeper {
public void feed(Predator predator) { // 호랑이가 오면 사과를 던져 준다.
System.out.println("feed "+predator.getFood());
}
}
class Bouncer{
void barkAnimal(Barkable animal){
animal.bark();
}
}
public class Sample{
public static void main(String[] args) {
ZooKeeper zooKeeper = new ZooKeeper();
Tiger tiger = new Tiger();
Lion lion = new Lion();
// zooKeeper.feed(tiger); // feed apple 출력
//zooKeeper.feed(lion); // feed banana 출
Bouncer bouncer = new Bouncer();
bouncer.barkAnimal(tiger);
bouncer.barkAnimal(lion);
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
5-9 추상클래스
abstract class Predator extends Animal{
abstract String getFood();
void printFood(){
System.out.printf("my food is %s\n", getFood());
}
static int LEG_COUNT = 4;
static int speed(){
return LEG_COUNT * 30;
}
}
interface Barkable{
void bark();
}
class Animal {
String name;
void setName(String name) {
this.name = name;
}
}
class Tiger extends Predator implements Barkable{
public String getFood(){
return "apple";
}
public void bark(){
System.out.println("어흥");
}
}
class Lion extends Predator implements Barkable{
public String getFood(){
return "banana";
}
public void bark(){
System.out.println("으르렁");
}
}
class ZooKeeper {
public void feed(Predator predator) { // 호랑이가 오면 사과를 던져 준다.
System.out.println("feed "+predator.getFood());
}
}
class Bouncer{
void barkAnimal(Barkable animal){
animal.bark();
}
}
public class Sample{
public static void main(String[] args) {
ZooKeeper zooKeeper = new ZooKeeper();
Tiger tiger = new Tiger();
Lion lion = new Lion();
// zooKeeper.feed(tiger); // feed apple 출력
//zooKeeper.feed(lion); // feed banana 출
Bouncer bouncer = new Bouncer();
bouncer.barkAnimal(tiger);
bouncer.barkAnimal(lion);
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ