java中的抽象类和抽象方法

本文详细介绍了Java中抽象类和抽象方法的概念及其使用方法。包括抽象类与抽象方法的基本语法、抽象类与普通类的区别、如何实现抽象类中的抽象方法等内容,并通过具体示例展示了多态性的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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可以直接调用上面的方法,无需强制类型转换成其子类的类型。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值