1.抽象类
比如图形(shape)类, 就是一个抽象的概念,因为我们无法计算这个“图形”的面积,所以它的成员函数area()是空的。
而继承它的子类(矩形,椭圆形,三角形等)就可以去覆写area()成员函数. 里面通过数学公式,计算出面积.
参考图形(shape)类,代码如下:
abstract class shape //抽象的图形类 { abstract public double area(); //abstract修饰的方法为抽象方法,无需实现方法体.但是必须被子类覆写 } class ellipse extends shape //椭圆类 { private double wr; //椭圆的半径宽度 private double hr; //椭圆的半径高度 public ellipse(double wr,double hr) { this.wr = wr; this.hr = hr; } public double area(){ return 3.14159*wr*hr; } } public class test{ public static void main(string args[]) { //shape s = new shape(); //如果定义抽象类,则将会报错 ellipse e = new ellipse(2.5,1); system.out.println("ellipse area = "+e.area()); } }
需要注意的是:
2.抽象内部类定义
在java中,如果我们抽象类的子类只有一个的话,则可以将它封装为抽象内部类里,从而为用户隐藏了这个无需知道的类.在类库中很常见.
示例如下:
abstract class a //抽象类 { abstract public void printdata();//abstract修饰的方法为抽象方法,无需实现方法体.但是必须被子类覆写
static private class b extends a //需要在抽象类里隐藏的内部类 { private int data=12; public void printdata() { system.out.println("b data:"+this.data); //打印内部类的data值 } } static public a getinstance() //获取实例 { return new b(); //通过静态方法来获取要隐藏的静态抽象内部类 (静态方法里只能使用静态变量) } } public class test{ public static void main(string args[]) { a a = a.getinstance(); a.printdata(); //等价于: a.getinstance().printdata(); } }
打印如下:
抽象类缺点:
接下来下章学习接口.
如对本文有疑问, 点击进行留言回复!!
HashMap、Hashtable、ConcurrentHashMap三者间的异同
解决RecycleView 中Item包含Edittext时,滑动view复用导致数据错乱的问题
多线程、同步工作原理、死锁案例、Lock接口、线程的生命周期的讲解及实现
网友评论