diff --git a/day09/src/com/inmind/abstract05/Animal.java b/day09/src/com/inmind/abstract05/Animal.java index 3aea8bf..5db1900 100644 --- a/day09/src/com/inmind/abstract05/Animal.java +++ b/day09/src/com/inmind/abstract05/Animal.java @@ -6,6 +6,11 @@ package com.inmind.abstract05; */ public abstract class Animal { + public Animal(){ + System.out.println("抽象类Animal的构造方法"); + } + + //动物吃的方法 public abstract void eat(); diff --git a/day09/src/com/inmind/abstract05/Cat.java b/day09/src/com/inmind/abstract05/Cat.java new file mode 100644 index 0000000..91b8daa --- /dev/null +++ b/day09/src/com/inmind/abstract05/Cat.java @@ -0,0 +1,10 @@ +package com.inmind.abstract05; + +public class Cat extends Animal{ + + + @Override + public void eat() { + System.out.println("猫吃鱼"); + } +} diff --git a/day09/src/com/inmind/abstract05/Demo06.java b/day09/src/com/inmind/abstract05/Demo06.java index dfdee27..ec338d9 100644 --- a/day09/src/com/inmind/abstract05/Demo06.java +++ b/day09/src/com/inmind/abstract05/Demo06.java @@ -1,6 +1,22 @@ package com.inmind.abstract05; /* +如何使用抽象类和抽象方法??? +1.抽象类不能被创建对象的,只能通过子类创建对象 +2.非抽象的子类,必须实现重写抽象类中的抽象方法 +3.创建子类对象,调用对应方法 +注意事项: +1. 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象 +2. 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的 +3. 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类 +4. 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。 */ public class Demo06 { + public static void main(String[] args) { + //Animal animal = new Animal(); + Dog dog = new Dog(); + dog.eat(); + Cat cat = new Cat(); + cat.eat(); + } } diff --git a/day09/src/com/inmind/abstract05/Dog.java b/day09/src/com/inmind/abstract05/Dog.java new file mode 100644 index 0000000..659a679 --- /dev/null +++ b/day09/src/com/inmind/abstract05/Dog.java @@ -0,0 +1,14 @@ +package com.inmind.abstract05; + +public class Dog extends Animal{ + + //编译器主动添加默认无参构造 + public Dog(){ + super(); + } + + @Override + public void eat(){ + System.out.println("狗吃骨头"); + }; +}