博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中的抽象类和抽象方法
阅读量:6213 次
发布时间:2019-06-21

本文共 1284 字,大约阅读时间需要 4 分钟。

abstract修饰抽象类和抽象方法。

  包含抽象方法的类只能定义成抽象类,但是抽象类中可以没有抽象方法。

  抽象方法没有方法体。只能由子类提供实现(重写)。

  抽象类只能被继承,final修饰的类不能被继承,所以abstract和final不能共存。

抽象方法如下所示:

public abstract class Sharp//抽象类{
  private String color; public abstract String getType();//抽象方法 public abstract double calPerimeter();   {
    System.out.println("执行抽象类Sharp中的初始化块");   }   public Sharp()   {}   //Sharp的构造器,不是用于创建Sharp对象的,而是用于子类的调用   public Sharp(String color)   {
    System.out.println("Sharp类的构造器");     this.color = color;   } }

在上面的代码中,这个抽象类包含了初始化块、构造器。

下面定义一个三角形类,继承Sharp类,实现Sharp类中的抽象方法。

public class Triangle extends Sharp{
  //定义三条边   private double a,b,c;      public Triangle(String color,double a,double b,double c)   {
    super(color);     this.a=a;     this.b=b;     this.c=c;   }   //重写Sharp类中计算周长的抽象方法   public double calPerimeter()   {
    return a+b+c;   }   //重写Sharp类中返回形状的抽象方法   public String get Type()   {
    return "三角形";   } }

假设还有个Circle类继承了Sharp类,那么如下代码:

//测试类的main方法main(){  Sharp s1 = new Triangle("黑色",2,3,4);   Sharp s2 = new Circle("黄色",3);   Syso(s1.getType());//多态   Syso(s1.calPerimeter());   Syso(s2.getType());   Syso(s2.calPerimeter()); }

这段代码定义了2个Sharp类型的引用性变量,分别指向Triangle和Circle。s1和s2可以直接调用上面的方法,无需强制类型转换成其子类的类型。

:利用抽象类和抽象方法可以充分发挥多态的优势,使用更加灵活。

转载地址:http://ynsja.baihongyu.com/

你可能感兴趣的文章
9年经验,总结SEO职业瓶颈
查看>>
【转】李开复:现代企业需要的7种人才
查看>>
Leetcode: Best Time to Buy and Sell Stock IV
查看>>
转: git常用命令
查看>>
HTTP状态码(HTTP Status Code)
查看>>
新浪微博客户端(20)-集成MJRefresh
查看>>
【Java面试题】5 Integer的int 的种种比较?详细分析
查看>>
Servlet3.0新特性WebFilter(Annotation Filter)详解
查看>>
js 上一步 下一步 操作
查看>>
JDK8中函数式流编程推荐
查看>>
Linux下的Cacti网络管理系统---安装(二)
查看>>
[置顶] 步步辨析JS中的对象成员
查看>>
链栈之C++实现
查看>>
Html5 localstorage解决Ajax回退的坑
查看>>
thinkphp模板中无法给自定义函数传多个参数
查看>>
sublime 格式化XML文件
查看>>
如何合理规划性能测试拓扑
查看>>
linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载
查看>>
火坑项目救火方案总结
查看>>
2018年Kubernetes采用情况调查报告
查看>>