JavaDay08-Homework(인터페이스와 클래스를 정의하고 속성 및 메소드 호출 + 객체의 멀티태스킹 + 인쇄 객체 + 판정 객체 동일)

7547 단어
1. 아래의 인터페이스와 클래스를 정의하고 관련 속성과 방법에 대한 설명과 호출을 완성한다.(데이터 유형, 매개 변수 목록, 반환값 유형 등은 제목에 따라 스스로 정의한다)
(1) 학습 인터페이스 Learning(방법: 예습preLearn, 수업lessons, 복습reveiw 포함)
(2) 술 인터페이스 Drinking(포함 방법: 술 drink, 토throw Up, 술주정play Mad 포함)
(3) 인간 추상류 Person(속성: 이름, 성별, 나이 포함, 추상적 방법: 연애 love)
학생 스튜던트는 사람이고 공부를 잘하며 술을 마시면 안 된다(뇌를 둔하게 하기 때문에), 자신의 학교(school)가 있고 친구와 위챗(chatting) 이야기를 나누는 것을 좋아한다.
공무원 오피서는 사람이기 때문에 공부를 하지 않아도 되고 술을 마셔야 하며 심심한 회의(meeting)를 자주 한다.
프로그래머 프로grammer는 사람이고 자주 공부하며 술을 마시지 않으며 코드(coding)와 버그(debuging)를 쓰는 것을 좋아한다.
 
package behaviordemo;

public interface Learning {
	public void preLearn();
	
	public void lessons();
	
	public void reveiw();
	
}
package behaviordemo;

public interface Drinking {
	public void drink();

	public void throwUp();

	public void playMad();

}
package behaviordemo;

public class TestLearning {

	public void operLearn(Learning l) {
		l.preLearn();
		l.lessons();
		l.reveiw();
	}

}
package behaviordemo;

public class TestDrinking {

	public void operDrink(Drinking d) {
		d.drink();
		d.throwUp();
		d.playMad();
	}

}
package behaviordemo;

public class Person {

	private String name;
	private String sex;
	private int age;

	public Person() {
	}

	public Person(String name, String sex, int age) {
		this.name = name;
		this.sex = sex;
		this.age = age;
		System.out.println(" " + name + ", " + sex + ", " + age);
	}

	public void love(String name) {
		System.out.println(name + " ...");
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}
package behaviordemo;

public class Student extends Person implements Learning {

	public Student() {
	}

	public void preLearn() {
		System.out.println(" ...");
	}

	public void lessons() {
		System.out.println(" ...");
	}

	public void reveiw() {
		System.out.println(" ...");
	}

	public void school() {
		System.out.println(" ...");
	}

	public void chatting() {
		System.out.println(" ...");
	}

}
package behaviordemo;

public class Officer extends Person implements Drinking {

	public Officer() {
	}

	public void drink() {
		System.out.println(" ...");
	}

	public void throwUp() {
		System.out.println(" ...");
	}

	public void playMad() {
		System.out.println(" ...");
	}

	public void meeting() {
		System.out.println(" ...");
	}

}
package behaviordemo;

public class Programmer extends Person implements Learning {

	public Programmer() {
	}

	public void preLearn() {
		System.out.println(" ...");
	}

	public void lessons() {
		System.out.println(" ...");
	}

	public void reveiw() {
		System.out.println(" ...");
	}

	public void coding() {
		System.out.println(" ...");
	}

	public void debuging() {
		System.out.println(" bug...");
	}
}
package behaviordemo;

public class Test {

	public static void main(String[] args) {
		TestLearning tl = new TestLearning();
		TestDrinking td = new TestDrinking();
		Student stu = new Student(); //  、 、 , 
		Officer off = new Officer();
		Programmer pro = new Programmer();
		stu.love(" ");
		tl.operLearn(stu);
		stu.school();
		stu.chatting();
		System.out.println();
		off.love(" ");
		td.operDrink(off);
		off.drink();
		off.playMad();
		off.throwUp();
		System.out.println();
		pro.love(" ");
		tl.operLearn(pro);
		pro.coding();
		pro.debuging();
	}

}

2. 장면 클래스 클라이언트에서 메소드 method1을 정의하고 인삼과 실삼에 대상의 다태성을 나타내며 메소드에서 호출한다.
만약 대상의 실제 유형이 학생이라면 친구와 위챗을 이야기한다.
공무원이라면 회의하러 간다.
프로그램 원숭이라면 코드를 쓰고 버그를 고쳐라.
package client;

public class Client {
	public Client() {
	}
}
package client;

public class Student extends Client {
	public void chatting() {
		System.out.println(" 。");
	}
}
package client;

public class Officer extends Client {
	public void meeting() {
		System.out.println(" 。");
	}
}
package client;

public class Programmer extends Client {
	public void coding() {
		System.out.println(" bug。");
	}

}
package client;

public class TestClient {

	public static void main(String[] args) {
		Student stu = new Student();
		Officer off = new Officer();
		Programmer pro = new Programmer();
		method1(stu);
		method1(off);
		method1(pro);
	}

	public static void method1(Client cli) {
		if (cli == null) {
			System.out.println(" null!");
			return;
		}
		if (cli instanceof Student) {
			Student stu = (Student) cli;
			stu.chatting();
		}
		if (cli instanceof Programmer) {
			Programmer pro = (Programmer) cli;
			pro.coding();
		}

		if (cli instanceof Officer) {
			Officer off = (Officer) cli;
			off.meeting();
		}

	}

}

3. 학생 대상을 직접 인쇄하면 다음과 같은 형식으로 출력할 수 있다.
학생정보: 이름: 장삼, 성별: 남자, 나이: 20, 학교: 북대)
package inner.print;

public class Student {

	//  
	class Inner {
		public void method() {
			System.out.println(" :   : , : , :20, : .");
		}
	}

	public Inner get() {
		return new Inner();
	}
}
package inner.print;

public class TestPrint {

	public static void main(String[] args) {
		//  
		Student stu = new Student();
		stu.get().method(); //  
		/*
		 *   
		 * Student.Inner in=stu.new Inner(); //  .   = .new
		 *  (); in.method();
		 */
	}

}

4. 만약에 두 학생의 성명, 성별, 나이, 학교가 같다면 이 두 학생은'상등하다'고 생각한다.
package equal;

public class Student {
	private String name;
	private String sex;
	private int age;
	private String school;

	public Student() {

	}

	public Student(String name, String sex, int age, String school) {
		this.name = name;
		this.sex = sex;
		this.age = age;
		this.school = school;
	}

	@Override
	public boolean equals(Object obj) {
		if (obj == null) {
			System.out.println(" null, ");
			return false;
		}
		if (!(obj instanceof Student)) { //  Student 
			System.out.println(" Student ");
			return false;
		}
		Student stu = (Student) obj; //  
		if (this.name.equals(stu.name) && this.sex.equals(stu.sex)
				&& this.age == stu.age && this.school.equals(stu.school)) {
			return true;
		}
		return false;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getSchool() {
		return school;
	}

	public void setSchool(String school) {
		this.school = school;
	}

}
package equal;

public class TestEqual {

	public static void main(String[] args) {
		Student stu1 = new Student(" ", " ", 20, " ");
		Student stu2 = new Student(" ", " ", 20, " ");
		boolean flag = stu1.equals(stu2);
		System.out.println(flag ? " 1 2“ ”" : " 1 2“ ”");
	}

}

Copyright © 2017 Jin Hanquan. All rights reserved.

좋은 웹페이지 즐겨찾기