linhe 4 days ago
parent
commit
7824d97df1
Signed by: linhe GPG Key ID: 3113E644F1D5D722
  1. 66
      w6/MainSix.java
  2. 14
      w6/usage.md

66
w6/MainSix.java

@ -0,0 +1,66 @@
public class MainSix {
public static abstract class Animal {
protected String name;
Animal(String name) {
this.name = name;
}
abstract public void makeSound();
}
public interface Swimmable {
void swim();
}
public static class Dog extends Animal implements Swimmable {
Dog(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.printf("This is dog %s.%n", this.name);
}
@Override
public void swim() {
System.out.printf("Dog %s swimming.%n", this.name);
}
}
public static class Cat extends Animal {
Cat(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.printf("This is cat %s.%n", this.name);
}
}
public static void trySwim(Animal animal) {
System.out.printf("Moving %s to swimming pool.%n", animal.name);
if (animal instanceof Swimmable) {
((Swimmable) animal).swim();
} else {
System.out.printf("Oops, looks like %s cannot swim...%n", animal.name);
}
}
public static void main(String[] args) {
Animal dog1 = new Dog("Adam");
Animal dog2 = new Dog("Belly");
Animal cat1 = new Cat("Carl");
dog1.makeSound();
dog2.makeSound();
cat1.makeSound();
trySwim(dog1);
trySwim(dog2);
trySwim(cat1);
}
}

14
w6/usage.md

@ -0,0 +1,14 @@
# 运行记录
```console
$ javac MainSix.java && java MainSix
This is dog Adam.
This is dog Belly.
This is cat Carl.
Moving Adam to swimming pool.
Dog Adam swimming.
Moving Belly to swimming pool.
Dog Belly swimming.
Moving Carl to swimming pool.
Oops, looks like Carl cannot swim...
```
Loading…
Cancel
Save