diff --git a/day09/src/com/inmind/abstract06/Animal.java b/day09/src/com/inmind/abstract06/Animal.java index dba8450..41de418 100644 --- a/day09/src/com/inmind/abstract06/Animal.java +++ b/day09/src/com/inmind/abstract06/Animal.java @@ -2,7 +2,14 @@ package com.inmind.abstract06; //抽象类 public abstract class Animal { + int i; + + public Animal(){ + System.out.println("抽象父类Animal的无参构造执行了"); + } //抽象方法 public abstract void eat(); + public abstract void eat1(); + public abstract void eat2(); } diff --git a/day09/src/com/inmind/abstract06/Demo10.java b/day09/src/com/inmind/abstract06/Demo10.java index d445062..45a9829 100644 --- a/day09/src/com/inmind/abstract06/Demo10.java +++ b/day09/src/com/inmind/abstract06/Demo10.java @@ -7,6 +7,24 @@ package com.inmind.abstract06; public abstract class 类名{ public abstract void 方法名(参数列表); } +---------------------------------------------------------------- +如何使用抽象类和抽象方法??? +1.抽象类不能被创建对象的,只能通过子类创建对象 +2.非抽象的子类,必须实现重写抽象类中的抽象方法 +3.创建子类对象,调用对应方法 + +注意事项: +1.抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。 +2.抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。 +3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。 +4.抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。 + + + */ public class Demo10 { + public static void main(String[] args) { + Dog dog = new Dog(); + dog.eat(); + } } diff --git a/day09/src/com/inmind/abstract06/Dog.java b/day09/src/com/inmind/abstract06/Dog.java index e82573e..3a921b4 100644 --- a/day09/src/com/inmind/abstract06/Dog.java +++ b/day09/src/com/inmind/abstract06/Dog.java @@ -6,4 +6,14 @@ public class Dog extends Animal{ public void eat() { System.out.println("狗吃骨头"); } + + @Override + public void eat1() { + + } + + @Override + public void eat2() { + + } } diff --git a/day09/src/com/inmind/abstract_test07/Demo11.java b/day09/src/com/inmind/abstract_test07/Demo11.java new file mode 100644 index 0000000..26ea505 --- /dev/null +++ b/day09/src/com/inmind/abstract_test07/Demo11.java @@ -0,0 +1,12 @@ +package com.inmind.abstract_test07; +/* +简单练习:定义一个图形类,求周长和面积,但是有不知道如何实现,只能由具体的图形子类(长方形,圆形)实现 + */ +public class Demo11 { + public static void main(String[] args) { + //创建一个长方形,求面积和周长 + Rectangle rectangle = new Rectangle(4, 3); + System.out.println("长方形面积为:"+rectangle.getArea()); + System.out.println("长方形周长为:"+rectangle.getZC()); + } +} diff --git a/day09/src/com/inmind/abstract_test07/Rectangle.java b/day09/src/com/inmind/abstract_test07/Rectangle.java new file mode 100644 index 0000000..1d4beb0 --- /dev/null +++ b/day09/src/com/inmind/abstract_test07/Rectangle.java @@ -0,0 +1,20 @@ +package com.inmind.abstract_test07; +//长方形类 +public class Rectangle extends Shape{ + + //在创建长方形对象,必须传入2个属性:长和宽 + public Rectangle(int chang ,int kuan){ + super(chang,kuan,0); + } + + + @Override + public int getArea() { + return getChang()*getKuan(); + } + + @Override + public int getZC() { + return 2*(getChang()+getKuan()); + } +} diff --git a/day09/src/com/inmind/abstract_test07/Shape.java b/day09/src/com/inmind/abstract_test07/Shape.java new file mode 100644 index 0000000..4366faa --- /dev/null +++ b/day09/src/com/inmind/abstract_test07/Shape.java @@ -0,0 +1,46 @@ +package com.inmind.abstract_test07; +//图形类:定义一些功能和属性 +public abstract class Shape { + //至少需要长,宽,半径 + private int chang; + private int kuan; + private int r; + //定义构造方法 + public Shape() { + } + + public Shape(int chang, int kuan, int r) { + this.chang = chang; + this.kuan = kuan; + this.r = r; + } + + //设置get/set方法,访问私有属性 + public int getChang() { + return chang; + } + + public void setChang(int chang) { + this.chang = chang; + } + + public int getKuan() { + return kuan; + } + + public void setKuan(int kuan) { + this.kuan = kuan; + } + + public int getR() { + return r; + } + + public void setR(int r) { + this.r = r; + } + + //求周长和面积 + public abstract int getArea(); + public abstract int getZC(); +}