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) {
= name;
}
public String getName() {
return name;
}
public void setName(String name) {
= name;
}
@Override
public void fly() {
System.out.println( + "的技能是:加速飞行");
}
}
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);
}
}
结果是:
红火的技能是:正常飞行
蓝冰的技能是:一个变三个
黄凤的技能是:加速飞行
红火的技能是:正常飞行
蓝冰的技能是:一个变三个
黄凤的技能是:加速飞行