Java基础系列2:笼统类

作者 : 开心源码 本文共2445个字,预计阅读时间需要7分钟 发布时间: 2022-05-13 共167人阅读
  • 笼统类:在面向对象中,所有的对象都是通过类来形容,但是反过来,并不是所有的类都用来形容对象。假如一个类没有包含足够的信息来描绘一个具体的对象,这样的类就是笼统类。
  • 笼统类不能实例化对象,必需被继承后才能使用。笼统类也是类,包含成员变量,成员方法和构造方法的访问方式,和普通类一样。
笼统方法
  • 类包含一个特别的成员方法,具体实现由子类实现,那么父类公告方法为笼统方法就可。
public abstract class demo{    private String name;    public abstract int quantity();}
公告笼统方法会造成两个结果:
  • 假如一个类包含笼统方法,那么该类必需是笼统类。
  • 任何子类假如重写父类的笼统方法,必需公告自身为笼统类。

继承笼统方法的子类必需重写该方法,子类也要公告为笼统类。最终,要有子类实现该笼统方法,否则,从最初的父类到最终的子类都不能用来实例化对象。

笼统类总结
  1. 笼统类不能被实例化,假如被实例化,会报错,编辑无法通过,只有笼统类的非笼统子类可以创立对象。
  2. 笼统类中不肯定包含笼统方法,但是有笼统方法的类必定是笼统类。
  3. 笼统类中的笼统方法只是公告,不包含方法体。
  4. 构造方法、用static修饰的类方法不能公告为笼统方法。
  5. 笼统类的子类必需给出父类所有笼统法发的具体实现,除非该子类也是笼统类。
示例

定义 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 Test {    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);    }}
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Java基础系列2:笼统类

发表回复