Java培训SE基础之抽象类使用

抽象类使用

public abstract class Pet {

       private String name;

       private int age;

       private int weight;

 

       public Pet(String name, int age, int weight) {

              this.name = name;

              this.age = age;

              this.weight = weight;

       }

       public String getName() {

              return name;

       }

       public void setName(String name) {

              this.name = name;

       }

 

       public abstract void speak(); // 抽象方法,仅有方法签名没有方法体,因此不能执行

 

       public abstract void eat();

 

}

 

 

public class Bird extends Pet {

       private int flySpeed;

 

       public Bird(String name, int age, int weight, int flySpeed) {

              super(name, age, weight);

              this. flySpeed = flySpeed;

       }

 

       public int getFlySpeed() {

              return flySpeed;

       }

       public void speak() {

              System.out.println(“布谷布谷…”);

       }

       public void eat() {

              System.out.println(“Eating…”);

       }

}

 

public class TestAbstract {

    public static void main(String args[]) {

        Pet pet = new Bird(“小布”, 1, 100, 20); // 抽象类适用于多态

        pet.speak(); // 虚拟方法调用, 执行子类方法, 父类方法是抽象的, 无法执行

    }

}

使用场景

解决方案:

       Java允许类设计者指定:超类声明一个方法但不提供实现,该方法的实现由子类提供。这样的方法称为抽象方法。有一个或更多抽象方法的类称为抽象类。

Vehicle是一个抽象类,有两个抽象方法。

public abstract class Vehicle{

       public abstract double calcFuelEfficiency(); //计算燃料效率的抽象方法

       public abstract double calcTripDistance();  //计算行驶距离的抽象方法

}

public class Truck extends Vehicle{

       public double calcFuelEfficiency( )   { //写出计算卡车的燃料效率的具体方法   }

       public double calcTripDistance( )    {  //写出计算卡车行驶距离的具体方法   }

}

public class RiverBarge extends Vehicle{

        public double calcFuelEfficiency( ) { //写出计算驳船的燃料效率的具体方法  }

        public double calcTripDistance( )  {  //写出计算驳船行驶距离的具体方法}

}

 

注意:抽象类不能实例化   new Vihicle()是非法的

想要了解跟多关于Java培训课程内容欢迎关注尚硅谷Java培训,尚硅谷除了这些技术文章外还有免费的高质量Java培训训课程视频供广大学员下载学习


上一篇:
下一篇:
关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
电话:010-56253825
邮箱:info@atguigu.com
地址:北京市昌平区宏福科技园综合楼6层(北京校区)

 深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦6层(上海校区)