Java程序员成长路线,“抽象类

=======

首先,什么是抽象类?

其实在进行开发时,我们可以假定抽象类是一种对内容的约束,打个比方来说,平行四边形类应该具有的特征和属性是:对边平行且相等,具有面积和周长;等边三角形类应该具有的特征和属性是:三条边长度相等,具有面积和周长,这些描述视乎都是合乎情理的。

那么我们对比一下其实就可以得到一个图形类的特征属性:具有面积和周长。所以我们就可以将该图形类定义为一个抽象类,所有继承该图形类的对象都应该具有它的特征属性,即具有面积和周长,这就可以说给了某些继承这个图形类的对象一个约束条件,就是必须面积和周长才能继承该类。

如何定义抽象类?

========

在解决实际问题时,一般将父类定义为抽象类,并且在Java和C#中抽象类具有以下公共特征:

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


abstract class Test

{

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

}

什么是抽象方法?

========

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

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

如何定义抽象方法?

=========

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

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


//定义图形类为抽象类,在抽象类中定义抽象方法求周长

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;




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值