day09--抽象类的练习
This commit is contained in:
@@ -2,7 +2,14 @@ package com.inmind.abstract06;
|
|||||||
|
|
||||||
//抽象类
|
//抽象类
|
||||||
public abstract class Animal {
|
public abstract class Animal {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
public Animal(){
|
||||||
|
System.out.println("抽象父类Animal的无参构造执行了");
|
||||||
|
}
|
||||||
|
|
||||||
//抽象方法
|
//抽象方法
|
||||||
public abstract void eat();
|
public abstract void eat();
|
||||||
|
public abstract void eat1();
|
||||||
|
public abstract void eat2();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,24 @@ package com.inmind.abstract06;
|
|||||||
public abstract class 类名{
|
public abstract class 类名{
|
||||||
public abstract void 方法名(参数列表);
|
public abstract void 方法名(参数列表);
|
||||||
}
|
}
|
||||||
|
----------------------------------------------------------------
|
||||||
|
如何使用抽象类和抽象方法???
|
||||||
|
1.抽象类不能被创建对象的,只能通过子类创建对象
|
||||||
|
2.非抽象的子类,必须实现重写抽象类中的抽象方法
|
||||||
|
3.创建子类对象,调用对应方法
|
||||||
|
|
||||||
|
注意事项:
|
||||||
|
1.抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。
|
||||||
|
2.抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。
|
||||||
|
3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
|
||||||
|
4.抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
public class Demo10 {
|
public class Demo10 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Dog dog = new Dog();
|
||||||
|
dog.eat();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,4 +6,14 @@ public class Dog extends Animal{
|
|||||||
public void eat() {
|
public void eat() {
|
||||||
System.out.println("狗吃骨头");
|
System.out.println("狗吃骨头");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void eat1() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void eat2() {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user