java(abstract抽象类)

java(abstract抽象类)文章目录1.抽象类语法1.抽象类语法1.在java中,一个类被abstract修饰则被称作抽象类,抽象类中被abstract修饰的方法则被称作抽象方法,abstract抽象方法只允许声明,不允许实现。abstractclassShape{publicabstractvoiddraw();publicabstractvoidcalcArea();protecteddoublearea;publicdoublegetArea(){

java(abstract抽象类)"

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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注