Java基础系列2:笼统类
- 笼统类:在面向对象中,所有的对象都是通过类来形容,但是反过来,并不是所有的类都用来形容对象。假如一个类没有包含足够的信息来描绘一个具体的对象,这样的类就是笼统类。
- 笼统类不能实例化对象,必需被继承后才能使用。笼统类也是类,包含成员变量,成员方法和构造方法的访问方式,和普通类一样。
笼统方法
- 类包含一个特别的成员方法,具体实现由子类实现,那么父类公告方法为笼统方法就可。
public abstract class demo{ private String name; public abstract int quantity();}
公告笼统方法会造成两个结果:
- 假如一个类包含笼统方法,那么该类必需是笼统类。
- 任何子类假如重写父类的笼统方法,必需公告自身为笼统类。
继承笼统方法的子类必需重写该方法,子类也要公告为笼统类。最终,要有子类实现该笼统方法,否则,从最初的父类到最终的子类都不能用来实例化对象。
笼统类总结
- 笼统类不能被实例化,假如被实例化,会报错,编辑无法通过,只有笼统类的非笼统子类可以创立对象。
- 笼统类中不肯定包含笼统方法,但是有笼统方法的类必定是笼统类。
- 笼统类中的笼统方法只是公告,不包含方法体。
- 构造方法、用static修饰的类方法不能公告为笼统方法。
- 笼统类的子类必需给出父类所有笼统法发的具体实现,除非该子类也是笼统类。
示例
定义 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:笼统类
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Java基础系列2:笼统类