Java抽象类和抽象方法例子

题目:定义Shape类表示一般二维图形。Shape具有抽象方法area和perimeter,分别计算形状的面积和周长。试定义一些二维形状类(如矩形、三角形、圆形等),这些均为Shape类的子类并计算出这些形状的面积和周长,打印输出相关信息。

代码:

//形状类public abstract class Shape {
    public abstract double area();
    public abstract double perimeter();
} 
//矩形类public class Rectangle extends Shape {

    private double length;
    private double width;

    public double getLength() {
        return length;
    }

    public void setLength(double length) {
        this.length = length;
    }

    public double getWidth() {
        return width;
    }

    public void setWidth(double width) {
        this.width = width;
    }

    @Override
    public double area() {
        return getLength() * getWidth();
    }

    @Override
    public double perimeter() {
        return 2 * (getWidth() + getWidth());
    }
}
//三角形类public class Triangle extends Shape {

    private double a, b, c;

    public double getA() {
        return a;
    }

    public void setA(double a) {
        this.a = a;
    }

    public double getB() {
        return b;
    }

    public void setB(double b) {
        this.b = b;
    }

    public double getC() {
        return c;
    }

    public void setC(double c) {
        this.c = c;
    }

    @Override
    public double area() {
        double p = (getA() + getB() + getC()) / 2;
        return Math.sqrt(p * (p - getA()) * (p - getB()) * (p - getC()));
    }

    @Override
    public double perimeter() {
        return getA() + getB() + getC();
    }

}
//圆形类public class Circle extends Shape {

    private double diameter;

    public double getDiameter() {
        return diameter;
    }

    public void setDiameter(double diameter) {
        this.diameter = diameter;
    }

    @Override
    public double area() {
        return Math.PI * Math.pow(getDiameter() / 2, 2);
    }

    @Override
    public double perimeter() {
        return Math.PI * getDiameter();
    }

}
//测试代码public class 测试 {

    public static void main(String [] args){
        Rectangle rec = new Rectangle();
        rec.setLength(10);
        rec.setWidth(5);
        double rec_area = rec.area();
        double rec_perimeter = rec.perimeter();
        System.out.println("矩形的面积:"+rec_area+",周长"+rec_perimeter);

        Triangle tri = new Triangle();
        tri.setA(3);
        tri.setB(4);
        tri.setC(5);
        double tri_area = tri.area();
        double tri_perimeter = tri.perimeter();
        System.out.println("三角形的面积:"+tri_area+",周长"+tri_perimeter);

        Circle cir = new Circle();
        cir.setDiameter(10);
        double cir_area = cir.area();
        double cir_perimeter = cir.perimeter();
        System.out.println("圆形的面积:"+cir_area+",周长"+cir_perimeter);
    }

}
时间: 2024-10-18 02:17:40

Java抽象类和抽象方法例子的相关文章

java抽象类和抽象方法

抽象类: java中定义没有方法体的方法,该方法有由其子类来具体的实现. 该没有方法体的方法我们称为抽象方法,含有抽象方法的类为抽象类. 抽象方法的特点: 1.只有方法头没有方法体的方法 2.抽象方法用abstract修饰 3.抽象方法代表一种不确定的操作或行为 4.抽象方法不能被调用 抽象类的特点: 1.定义中含有抽象方法的类叫抽象类 2.抽象类用abstract修饰 3.抽象类代表一种抽象的对象类型 4.抽象类不能实例化 5.抽象类可以有具体的方法,可以没有抽象方法 //公司所有员工都有工号

Java 抽象类和抽象方法

包含抽象方法的类叫抽象类,如果一个类中包含一个或多个抽象方法,该类必须被限定为抽象的,否则编译器会报错,抽象类不可创建对象,创建抽象类的对象编译器会报错 如果从一个抽象类继承,并想创建该新类的对象,那么必须为基类中的所有抽象方法提供方法定义,如果不这样做(可以选择不做),那么导出类便也是抽象类,且编译器会强制我们用abstract关键字来限定这个类.. 可以创建没有任何抽象方法的抽象类,创建抽象类和抽象方法非常有用,因为我们可以使类的抽象性明确起来,并告诉用户和编译器打算怎么去使用它们,抽象类还

java抽象类和抽象方法之间的关系

抽象类和抽象方法之间的关系有抽象方法的类,一定是抽象类:抽象类不一定有抽象方法当子类继承抽象类时,必须要将抽象类中的抽象方法全部实现(或者称为重写),否则子类依然是抽象类因为子类是继承父类全部内容,所以也就相当于子类中也有了抽象方法,通过重写,可以将抽象方法覆盖. 抽象类的特点:必须有abstract关键字修饰,不可以通过new来创建对象,抽象方法不可以写函数体(非抽象方法必须写函数体) 关键字小总结:不想让别的类重写的方法,用final:内容不确定的方法,用abstract(子类中用法不一样)

JAVA抽象类和抽象方法(abstract)

一.抽象(abstract)的使用 当父类的某些方法不确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]. 我们都知道,父类是将子类所共同拥有的属性和方法进行抽取,这些属性和方法中,有的是已经明确实现了的,有的还无法确定,那么我们就可以将其定义成抽象,在后日子类进行重用,进行具体化.这样,抽象类也就诞生了. 例如,定义了"动物"父类,其中"动物名称"和"动物年龄"属性已经明确了,但是"动

Java——抽象类和抽象方法

抽象方法和抽象类必须使用 abstract 修饰符来定义,有抽象方法的类只能被定义成抽象类,抽象类可以没有抽象方法. >抽象方法和抽象类的规则如下: >抽象类必须使用 abstract 修饰符来定义,抽象方法也必须使用 abstract 修饰符来修饰,抽象方法不能有方法体. >抽象方法不能被实例化,实例化的工作应该交由它的子类来完成,它只需要一个引用即可. >抽象类可以包含成员变量.方法(普通方法和抽象方法都可以).构造器.初识化块.内部类(接口.枚举)5种成分.抽象类的构造器不能

二、Java面向对象(14)_抽象类和抽象方法

2018-05-06 抽象类和抽象方法 一.抽象的使用 当父类的某些方法不确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]. 我们都知道,父类是将子类所共同拥有的属性和方法进行抽取,这些属性和方法中,有的是已经明确实现了的,有的还无法确定,那么我们就可以将其定义成抽象,在后日子类进行重用,进行具体化.这样,抽象类也就诞生了. 例如,定义了"动物"父类,其中"动物名称"和"动物年龄"属性已经明确了

Java抽象类/抽象方法

java抽象类的特点: *抽象类无法被实例化 *子类继承抽象类然后实例化子类 *子类继承了抽象类剋必须实现抽象类的中的抽象方法 *抽象类的定义 abstract class *** *抽象方法的定义:public abstract void ***():ps:抽象方法不能有方法体 --------------------------------------------------------------------------- 下面我们来代码实现下: 先创建一个.java文件 然后我们定义个抽

Java 抽象类 抽象方法 接口

#抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量.成员方法和构造方法的访问方式和普通类一样. 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用.也是因为这个原因,通常在设计阶段决定要不要设计抽象类. 父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法. 在Java中抽象

关于Java 实现抽象类的抽象方法的特性的利用---面向切面

今天看工作看代码突然有了以下设想: /** * Created by zq on 2017/5/25. * 抽象类 */ public abstract class AbstractC { public void C(){ D(); System.out.println("C_1"); E(); } public abstract void D(); // { // System.out.println("C_1"); // } public abstract vo