1. 코드 및 렌더링
1. 재 작성
사례 : 전자 애완 동물 시스템 재 작성 및 최적화 방법 사용
코드는 다음과 같습니다 (예제).
package test1;
public class Dog extends Pet{
private String type;
public Dog(String name, int health, int cute, String type) {
super(name, health, cute);
this.type = type;
}
@Override
public void show() {
super.show();
System.out.println("我是一只:"+type);
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
package test1;
public class Penguin extends Pet{
private String sex;
public Penguin(String name, int health, int cute, String sex) {
super(name, health, cute);
this.sex = sex;
}
@Override
public void show() {
super.show();
System.out.println("我的性别是:"+sex);
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
package test1;
public class Pet {
private String name;
private int health;
private int cute;
public Pet(String name, int health, int cute) {
this.name = name;
this.health = health;
this.cute = cute;
}
public void show(){
System.out.println("宠物的自白:");
System.out.println("我的名字:"+name+"\t"+"我的健康值为" +
health+"\t"+"我和主人的亲密度是"+cute);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public int getCute() {
return cute;
}
public void setCute(int cute) {
this.cute = cute;
}
}
package test1;
public class Test {
public static void main(String[] args) {
fun(new Dog("欧欧",100,0,"雪纳瑞犬"));
fun(new Penguin("楠楠",100,0,"Q妹"));
}
private static void fun(Pet pet) {
pet.show();
}
}
2. 다시 쓰기
사례 : 두 학생 (학생)이 동일한 대상인지 확인하기 위해 비교 규칙을 다시 작성합니다.
학생 관련 속성
ID (학생 번호), 이름 (이름), 연령 (연령)
두 학생이 동일한 학생 번호와 이름을 가진 경우 동일 객체
코드는 다음과 같습니다 (예제).
package test2;
public class Student {
private String name;
private int id;
private int age;
public Student(String name, int id, int age) {
this.name = name;
this.id = id;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Student){
Student s= (Student) obj;
return this.name==s.name && this.id==s.id;
}else {
return false;
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package test2;
public class TestStu {
public static void main(String[] args) {
Student stu1= new Student("张三",123,22);
Student stu2= new Student("张三",123,26);
System.out.println(stu1.equals(stu2));
}
}
3. 다형성
사례 : 반려
동물 에게 다형성을 사용합니다 . 반려 동물은 배고프고 주인은 반려 동물에게 먹이를 주어야합니다. 다형성을 사용하여이 과정을 수행하십시오.
반려 동물마다 다른 것을 먹습니다.
반려 동물마다 식사 후 건강 값 이 다릅니다.
건강 값이 100에 도달하면 , no 공급을 계속하는
코드는 다음과 같습니다 (예제).
package test3;
public class Dog extends Pet{
public Dog(int health) {
super(health);
}
@Override
public void eat(String food) {
System.out.println("狗狗吃"+food+",健康值增加3");
setHealth(getHealth()+3);
}
}
package test3;
public class Master {
public void feed(Pet pet,String food){
pet.eat(food);
}
}
package test3;
public class Penguin extends Pet{
public Penguin(int health) {
super(health);
}
@Override
public void eat(String food) {
System.out.println("企鹅吃"+food+",健康值增加5");
setHealth(getHealth()+5);
}
}
data = pd.read_csv(
package test3;
public class Pet {
private int health;
public Pet(int health) {
this.health = health;
}
public void eat(String food){
System.out.println("宠物吃"+food);
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
if (health>=100){
this.health=100;
System.out.println("已经吃饱了");
}
}
}
package test3;
public class Test {
public static void main(String[] args) {
Master m=new Master();
Dog dog=new Dog(60);
m.feed(dog,"大骨头");
System.out.println(dog.getHealth());
Penguin p=new Penguin(50);
m.feed(p,"鱼");
System.out.println(p.getHealth());
}
}
4.instanceof 연산자
사례 : 주인이 애완 동물을 입양하고 노는 기능을 구현하기 위해 다형성을 사용합니다.
개는 프리즈 비를 잡는 독특한 방법이 있고 펭귄은 남극 대륙에서 독특한 수영 방법이 있습니다. 다양한 특정 펫의 고유 한 메소드를 호출하는 테스트 클래스를 작성해주세요
다운 캐스팅을
사용하고 instanceof를 사용하여 펫의 종류를 결정하세요.
코드는 다음과 같습니다 (예제).
package test4;
public class Dog extends Pet{
public Dog(int health) {
super(health);
}
public void fly(){
System.out.println("狗狗接飞盘");
}
@Override
public void eat(String food) {
System.out.println("狗狗吃"+food+",将康值增加3");
setHealth(getHealth()+3);
}
}
package test4;
public class Master {
public void feed(Pet pet,String food){
pet.eat(food);
}
public void play(Pet pet){
if (pet instanceof Dog){
Dog dog= (Dog) pet;
dog.fly();
}else if (pet instanceof Penguin){
Penguin p= (Penguin) pet;
p.swim();
}
}
public Pet adopt(String name){
if (name.equals("狗狗")){
return new Dog(60);
}else if (name.equals("企鹅")){
return new Penguin(50);
}else {
return null;
}
}
public Pet donate(String name){
if (name.equals("狗狗")){
return new Dog(60);
}else if (name.equals("企鹅")){
return new Penguin(60);
}else {
return null;
}
}
}
package test4;
public class Penguin extends Pet{
public Penguin(int health) {
super(health);
}
public void swim(){
System.out.println("企鹅在游泳");
}
@Override
public void eat(String food) {
System.out.println("企鹅吃"+food+",将康值增加5");
setHealth(getHealth()+5);
}
}
package test4;
public class Pet {
private int health;
public Pet() {
}
public Pet(int health) {
this.health = health;
}
public void eat(String food){
System.out.println("宠物吃"+food);
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
if (health>100){
this.health=100;
System.out.println("吃饱了,再也吃不下了");
}
}
}
package test4;
public class Test {
public static void main(String[] args) {
Master m=new Master();
Pet p = m.adopt("狗狗");
m.feed(p,"大骨头");
m.play(p);
System.out.println(p.getHealth());
Pet a=m.donate("狗狗");
System.out.println("你捐献的是:"+a.getClass().getName());
}
}
요약하자면
위 내용은 주로 상속, 재 작성, 다형성과 같은 관련 기술을 사용하여 실현되는 다형성 관련 사례의 내용입니다.