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); } }
结果是:
红火的技能是:正常飞行
蓝冰的技能是:一个变三个
黄凤的技能是:加速飞行
红火的技能是:正常飞行
蓝冰的技能是:一个变三个
黄凤的技能是:加速飞行
本文来自博客园,作者:程序员hg,转载请注明原文链接:https://www.cnblogs.com/hg-blogs/p/15500458.html