Java 抽象类

1.什么是抽象类?
  类和类之间有共同的特征,将这些共同特征提取出来,形成的就是抽象类。
  类本身是不存在的,所以抽象类是无法创建对象的(无法实例化)。
2.抽象类属于什么类型?
  属于引用数据类型。
3.抽象类怎么定义?
  [修饰符列表] abstract class 类名{
    类体
  }
4.抽象类是无法实例化的,无法创建对象的,所以抽象类是被子类继承的
5.final 和abstract 不能联合使用
6.抽象类的子类可以是抽象类,也可以是非抽象类
7.抽象类无法实例化,但是抽象类有构造方法,构造方法是供子类使用的
8.抽象类关联到一个概念:抽象方法。什么是抽象方法:
  抽象方法表示没有实现的方法,没有方法体的方法。
  例如: public abstract void doSome();
  特征是:1.有abstract 关键字
      2.没有方法体
9.抽象类中不一定有抽象方法,但抽象方法必须出现在抽象类中
10.重点:
  这是一个强制规定:
    一个非抽象的类继承抽象类,必须将抽象方法进行覆盖/重写,不然编译报错!
 
下面是一个抽象类的例子:可以复制粘贴,学习,
  这个例子采用了继承、多态、抽象类、方法重写等。是一个综合练习,如果能理解,那么就掌握了前面的所说的内容了。
package com.learnroom.test10;
//抽象类鸟
public abstract class Bird {
//    抽象方法fly
    public abstract void fly();
}
package com.learnroom.test10;

public class RedBird extends Bird {
    private String color;

    public RedBird() {
    }

    public RedBird(String color) {
        this.color = color;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    @Override
    public void fly() {
        System.out.println(this.color + "的技能是:正常飞行");
    }
}
package com.learnroom.test10;

public class BlueBird extends Bird {
    private String color;

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public BlueBird() {
    }

    public BlueBird(String color){
        this.color = color;
    }

    @Override
    public void fly() {
        System.out.println(this.color +"的技能是:一个变三个" );
    }
}
package com.learnroom.test10;

public class YellowBird extends Bird{
    private String name;

    public YellowBird() {
    }

    public YellowBird(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void fly() {
        System.out.println(this.name + "的技能是:加速飞行");
    }
}
package com.learnroom.test10;

public class SlingShot {
    public void send(Bird bird){
        bird.fly();
    }
}
package com.learnroom.test10;
/**
 * 练习:
 * 愤怒的小鸟,
 * 红火(红颜色的鸟)可以正常飞行 ,
 * 蓝冰(蓝颜色的鸟)可以一个变三个,
 * 黄风(黄颜色的鸟)可以加速飞行,
 * 定义一个弹弓类,
 * 有一个弹射的方法 ,可以把鸟给射出去, 鸟在飞。 */
public class Test {
    public static void main(String[] args) {
         Bird b1 = new RedBird("红火");
         b1.fly();
         Bird b2 = new BlueBird("蓝冰");
         b2.fly();
         Bird b3 = new YellowBird("黄凤");
         b3.fly();

         SlingShot s = new SlingShot();
         s.send(b1);
         s.send(b2);
         s.send(b3);
    }
}
结果是:
    红火的技能是:正常飞行
    蓝冰的技能是:一个变三个
    黄凤的技能是:加速飞行
    红火的技能是:正常飞行
    蓝冰的技能是:一个变三个
    黄凤的技能是:加速飞行
posted @ 2021-11-02 18:50  程序员hg  阅读(259)  评论(0编辑  收藏  举报