Animal.java 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package main.java.com.sf.part05.oop_05;
  2. public class Animal {
  3. int num = 10;
  4. public void eat() {
  5. System.out.println("动物吃食物");
  6. }
  7. }
  8. class Dog extends Animal {
  9. public void protectedHome() {
  10. System.out.println("狗看家");
  11. }
  12. int num = 20;
  13. @Override
  14. public void eat() {
  15. System.out.println("狗吃骨头");
  16. }
  17. }
  18. class Cat extends Animal {
  19. int num = 30;
  20. @Override
  21. public void eat() {
  22. System.out.println("猫吃鱼");
  23. }
  24. }
  25. class AnimalTest {
  26. public static void main(String[] args) {
  27. Dog dog = new Dog();
  28. dog.eat();
  29. Cat cat = new Cat();
  30. cat.eat();
  31. // 多态的形式
  32. //父类的引用指向了子类的对象
  33. // 父类/父接口 = new 子类();
  34. // 多态的方式调用方法 编译看左边,运行看右边
  35. // 多态调用属性/变量时,编译看左边,运行看左边
  36. Animal animal = new Dog();
  37. Animal animal1 = new Cat();
  38. animal.eat();
  39. int num = animal.num;
  40. // 强转 父类 - > 子类
  41. // instanceof 判断当前变量是否属于某种类型
  42. if(animal instanceof Dog){
  43. Dog dog1 = (Dog) animal;
  44. dog1.protectedHome();
  45. }
  46. System.out.println(num);
  47. animal1.eat();
  48. }
  49. }