1.抽象类基本概念
1 package com.neusoft.abstracted; 2 /** 3 * 抽象类:在class之前加abstract关键字 4 * 抽象方法语法: 修饰符 abstract 返回值类型 方法名(形参列表); 5 * 1.抽象方法的返回值前面有abstract关键字 6 * 2.抽象方法没有方法体 7 * 3.抽象方法的定义是一行单独的语句,,以分号结束。 8 * =================================== 9 * 4.一个类中如果定义了抽象方法,这个类一定是抽象类 10 * 5.抽象方法必须在抽象类中,但是抽象类中可以没有抽象方法 11 * 6.抽象类不能自己创建自己的对象,使用new创建抽象类对象将产生错误 12 * 7.子类继承抽象类的时候,应该覆盖抽象类中的所有方法,否则子类也必须定义为抽象类 13 * 14 *问题:定义一个类,使得其包含计算面积的方法,定义表示三角形的类Triangle和 15 *表示矩形的类Rectangle,分别继承上述的抽象类。 16 */ 17 public abstract class AbstractClassedDemo { 18 double width; 19 double height; 20 public AbstractClassedDemo(double w,double h) { 21 this.width=w; 22 this.height=h; 23 } 24 public abstract double getAera(); 25 }
2.以矩形、三角形等为例分析抽象类
1 package com.neusoft.abstracted; 2 3 public class Rectangle extends AbstractClassedDemo{ 4 5 public Rectangle(double w, double h) { 6 super(w, h); 7 } 8 9 @Override 10 public double getAera() { 11 return width*height; 12 } 13 14 }
3.三角形
1 package com.neusoft.abstracted; 2 3 public class Trangle extends AbstractClassedDemo { 4 5 public Trangle(double w, double h) { 6 super(w, h); 7 } 8 9 @Override 10 public double getAera() { 11 // TODO Auto-generated method stub 12 return width*height/2; 13 } 14 15 }
4.测试代码
1 package com.neusoft.abstracted; 2 3 public class TestAbstract { 4 public static void main(String[] args) { 5 Trangle trangle = new Trangle(4, 6); 6 Rectangle rectangle = new Rectangle(4, 6); 7 8 System.out.println("三角形"+trangle.getAera()); 9 System.out.println("四边形"+rectangle.getAera()); 10 } 11 }
5.结果分析: