写点什么

“抽象类”到底抽不抽象?实例对比一看便知!

  • 2021 年 11 月 11 日
  • 本文字数:1215 字

    阅读完需:约 4 分钟


以下是抽象类在 Java 和 C#中的实现代码,该代码在 Java 和 C#中通用:


abstract class Test


{


//使用 abstract 关键字实现抽象类的创建


}


什么是抽象方法?


========


我们知道在类中是具有方法的,那么顾名思义,在抽象类中也是具有方法的,并且在抽象类中定义的方法可以是抽象方法,注意:可以是抽象方法,也就是说在抽象类中定义的方法,可以是抽象的,也可以是普通的。


如上面的图形类,其中每个图形都具有的属性是面积和周长。那么我们就可以将计算面积和周长的方法定义为抽象方法。也就是说,当其他类继承该抽象类时,必须要实现面积和周长的方法。


如何定义抽象方法?


=========


使用关键字 abstract 定义的类成为抽象类,使用该关键字定义的方法成为抽象方法。抽象方法具有以下特征:



以下是在一个抽象类中定义抽象方法的代码,在 Java 和 C#中通用:


//定义图形类为抽象类,在抽象


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


类中定义抽象方法求周长


abstract class ShapeArea


{


public abstract void Perimeter();


}


抽象类和抽象方法的实现


===========


我们在上面说道一般将父类定义为抽象类,因此想要实现抽象类及其其中的抽象方法,就必须继承或派生自该抽象类。


注意啦:在 C#中继承抽象类使用“:”


而在 Java 中继承抽象类则需要使用“extends”关键字。


同时,在继承了抽象类之后,若该抽象类中存在抽象方法,则需要使用关键字 override 对该方法进行重写。同时这也是实现抽象方法的一种方式。


下面分别是在 Java 和 C#中实现抽象方法的案例分析,使用圆形类继承图形抽象类实现求面积:


在 Java 中:


定义抽象类:


package exeicise1;


//定义图形抽象类


public abstract class ShapeArea {


abstract void Area(); //定义抽象方法


}


定义圆形类继承抽象类:


package exeicise1;


//定义圆形类继承抽象类


public class Circle extends ShapeArea{


public double r;


public double s;


//对抽象方法重写


public void Area() {


s = 3.14 * r* 2;


System.out.println("面积是:" + s);


}


}


在主方法中调用圆形类输出方法:


package exeicise1;


public class Testmain {


public static void main(String[] args) {


Circle circle = new Circle(); //定义对象接收圆形类


circle.r = 2;


circle.Area();


}


}


结果为:



在 C#中:


定义图形类:


using System;


using System.Collections.Generic;


using System.Text;


namespace Texta


{


//定义抽象类


abstract class ShapeArea


{


public abstract void Area(); //定义抽象方法


}


}


定义圆形类并继承抽象类:


using System;


using System.Collections.Generic;


using System.Reflection.PortableExecutable;


using System.Security;


using System.Text;


//using ShapeArea;


namespace Texta


{


//定义圆形类继承抽象类


class Circle : ShapeArea


{


public double r;


public double s;


//对抽象方法重写并实现


public override void Area()


{


s = 3.14 * r * r;


Console.WriteLine("面积是:" + s);


}


}


}

评论

发布
暂无评论
“抽象类”到底抽不抽象?实例对比一看便知!