1.抽象类语法
1.在java中,一个类被abstract修饰则被称作抽象类,抽象类中被abstract修饰的方法则被称作抽象方法,abstract抽象方法只允许声明,不允许实现。
abstract class Shape{
public abstract void draw();
public abstract void calcArea();
protected double area;
public double getArea(){
return this.area;
}
}
2.抽象类特性
2.1 抽象类不能实例化对象。但是可以使用abstract声明对象,该对象可以用作其子类对象的上转型对象,那么该对象就可以调用子类重写的方法。
public class AbstractDemo{
public static void main(String[] args) {
Shape shape = new Shape();.//编译出错,Shape是抽象类,无法实例化对象
}
}
2.2 抽象方法不能是 private,final,static的,因为抽象方法是要被子类重写的。
注:抽象方法没有访问限定符时,默认是public的。
2.3 抽象类必须被继承,且继承后子类必须重写父类的所有抽象方法,(否则子类,也是抽象类,需用abstract修饰)
class Circle extends Shape{
private double r;
final private static double PI = 3.14;
public Circle(double r){
this.r = r;
}
@Override
public void draw() {
System.out.println("画一个圆");
}
@Override
public void calcArea() {
area=PI*r*r;
}
}
2.4 抽象类不一定包含抽象方法,但是包含抽象方法的一定是抽象类
2.5 抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量
3.理解abstract类
3.1 抽象类可以抽象出重要的行为准则,该行为准则用抽象方法来表示。即抽象类封装了子类必须有的行为准则。
3.2 抽象类声明的对象可以作为其子类的上转型对象,调用子类重写的方法,即体现子类根据抽象类的行为标准给出具体行为。
3.3 抽象类相当于多了一层编译器的校验,如果实际工作应该由子类完成,而不小心使用了父类,此时普通类编译器不会报错,而父类是抽象类实例化对象时就会报错。
4. abstract类和多态
abstract class Animal {
public abstract void cry();
public abstract String getAnimalName();
}
class Simulator {
public void playSound(Animal animal){
System.out.println("现在播放"+animal.getAnimalName()+"类的声音");
animal.cry();
}
}
class Dog extends Animal {
@Override
public void cry() {
System.out.println("旺旺");
}
@Override
public String getAnimalName() {
return "狗";
}
}
class Cat extends Animal {
@Override
public void cry() {
System.out.println("喵喵");
}
@Override
public String getAnimalName() {
return "猫";
}
}
public class Test {
public static void main(String[] args) {
Simulator simulator = new Simulator();
simulator.playSound(new Cat());
simulator.playSound(new Dog());
}
}
今天的文章java(abstract抽象类)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33974.html