百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Java抽象(abstract)类(java中抽象类的使用)

cac55 2024-09-20 12:41 24 浏览 0 评论

Java语言提供了两种类,分别为具体类和抽象类。前面学习接触的类都是具体类。这一节介绍一下抽象类。

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,那么这样的类称为抽象类。

在Java中抽象类的语法格式如下:

<abstract>class<class_name> {
    <abstract><type><method_name>(parameter-iist);
}123复制代码类型:[java]

其中,abstract表示该类或该方法是抽象的;class_name表示抽象类的名称;method_name表示抽象方法名称,parameter-list表示方法参数列表。

如果一个方法使用abstract来修饰,则说明该方法是抽象方法,抽象方法只有声明没有实现。需要注意的是abstract关键字只能用于普通方法,不能用于static方法或者构造方法中。

抽象方法的3个特征如下:

1、抽象方法没有方法体

2、抽象方法必须存在于抽象类中

3、子类重写父类时,必须重写父类所有的抽象方法

注意:在使用abstract关键字修饰抽象方法时不能使用private修饰,因为抽象方法必须被子类重写,而如果使用了private声明,则子类是无法重写的。

抽象类的定义和使用规则如下:

抽象类和抽象方法都要使用abstract关键字声明。

如果一个方法被声明为抽象的,那么这个类也必须声明为抽象的。而一个抽象类中,可以有0~n个抽象方法,以及0~n个具体方法。

抽象类不能实例化,也就是不能使用new关键字创建对象。

例1

不同几何图形的面积计算公式是不同的,但是它们具有的特性是相同的,都具有长和宽这两个属性,也都具有面积计算的方法。那么可以定义一个抽象类,在该抽象类中含有两个属性(width和height)和一个抽象方法area(),具体步骤如下。

1)首先创建一个表示图形的抽象类Shape,代码如下所示。

public abstract class Shape {
    public int width; // 几何图形的长
    public int height; // 几何图形的宽
    public Shape(int width, int height) {
        this.width = width;
        this.height = height;
    }
    public abstract double area(); // 定义抽象方法,计算面积
}123456789复制代码类型:[java]

2)定义一个正方形类,该类继承自形状类Shape,并重写了area()抽象方法。正方形类的代码如下:

public class Square extends Shape {
    public Square(int width, int height) {
        super(width, height);
    }
    // 重写父类中的抽象方法,实现计算正方形面积的功能
    @Override
    public double area() {
        return width * height;
    }
}12345678910复制代码类型:[java]

3)定义一个三角形类,该类与正方形类一样,需要继承形状类Shape,并重写父类中的抽象方法area()。三角形类的代码实现如下:

public class Triangle extends Shape {
    public Triangle(int width, int height) {
        super(width, height);
    }
    // 重写父类中的抽象方法,实现计算三角形面积的功能
    @Override
    public double area() {
        return 0.5 * width * height;
    }
}12345678910复制代码类型:[java]

4)最后创建一个测试类,分别创建正方形类和三角形类的对象,并调用各类中的area()方法,打印出不同形状的几何图形的面积。测试类的代码如下:

public class ShapeTest {
    public static void main(String[] args) {
        Square square = new Square(5, 4); // 创建正方形类对象
        System.out.println("正方形的面积为:" + square.area());
        Triangle triangle = new Triangle(2, 5); // 创建三角形类对象
        System.out.println("三角形的面积为:" + triangle.area());
    }
}12345678复制代码类型:[java]

在该程序中,创建了4个类,分别为图形类Shape、正方形类Square、三角形类Triangle和测试类ShapeTest。其中图形类Shape是一个抽象类,创建了两个属性,分别为图形的长度和宽度,并通过构造方法Shape()给这两个属性赋值。

在Shape类的最后定义了一个抽象方法area(),用来计算图形的面积。在这里,Shape类只是定义了计算图形面积的方法,而对于如何计算并没有任何限制。也可以这样理解,抽象类Shape仅定义了子类的一般形式。

正方形类Square继承抽象类Shape,并实现了抽象方法area()。三角形类Triangle的实现和正方形类相同,这里不再介绍。

在测试类ShapeTest的main()方法中,首先创建了正方形类和三角形类的实例化对象square和triangle,然后分别调用area()方法实现了面积的计算功能。

5)运行该程序,输出的结果如下:

正方形的面积为:20.0
三角形的面积为:5.0

开课吧广场-人才学习交流平台

相关推荐

微信新表情怎么更新哪里更新 微信新表情包安卓苹果更新方法一览

根据微信官方的消息,微信新增“裂开”等6个小表情。IT之家了解到,截止发稿时仍有很多用户反映没有收到小表情的更新,微信官方表示“不急,今夜都会有的”。根据微博网友的留言,这6个小表情的名称...

谷歌调整Android 15最低硬件要求:存储容量提升至32GB

IT之家4月15日消息,谷歌近期对Android系统的最低硬件要求进行了调整,其中最明显的变动的是Android15的存储容量要求从Android14的16GB提升至32...

微信8.0怎么更新安卓 微信8.0怎么更新不了 如何更新微信8.0安卓

微信8.0更新方法也是值得研究的,ios的话不用说,可以在商店直接升级,但是安卓的呢,是怎么更新的,在哪里可以更新到安卓版,下面就来介绍下安卓在哪更新。微信8.0更新方法一览更新内容一览:1、首屏页有...

谷歌升级安卓Files文件管理器,支持以ZIP格式压缩文件、文件夹

IT之家9月10日消息,科技媒体AndroidAuthority昨日(9月9日)发布博文,表示谷歌旗下Files应用将支持以ZIP格式压缩文件、文件夹。该媒体逆向编译最新的...

安卓 7.0,魅族 15 Plus 喜迎 Flyme 8 稳定版更新

IT之家9月4日消息据网友投递,魅族15Plus已获得Flyme8.0.5.0A稳定版更新推送。此次更新基于安卓7.0,更新包体积约284.7MB,更新内容包括游戏模式4.1、优...

一加7T+7T Pro「Android 10.0 稳定版」H2OS-全量包发布-可救砖

一加7T和一加7TPro官方终于全量包推送稳定版本了,对比之前的稳定版来说,修复了太多的BUG,其实小编在体验一加氢OS的感受下,并没感觉到什么BUG,系统还是非常稳定的,只不过太过简洁,习惯了MI...

大疆 OM 6 和 OM SE 智能手机云台曝光

IT之家9月21日消息,大疆OSMO官方宣布,将于9月22日21点发布“灵机随行”新品,根据此前爆料,预计为DJIOM6和OMSE手机云台。目前大疆DJIOM...

【性价比入门大耳台式组合】说说飞傲FT1+K11R2R

眼瞅着就要到了2024的Q4,大半年下来,才子伴乐谈写了不少分享,飞傲的份额可能是各个厂牌里面最高的,前三季度他们“按部就班”推出了一系列新品,远高于其他国内品牌。今天要说的主角,是他们近期推出的两款...

暑期畅享高质量音乐生活,创新科技818新品首发狂欢不停

炎热的八月已经过去了一半,各位小伙伴的暑期生活过的怎么样呢?是顶着火辣的太阳出门逛街,还是在家吹着空调过上清爽舒适的宅家生活,相信不少人都是选择后者,当然,整天躺在家里只是刷微博开黑聊天的话,久而久之...

唱机秘笈,让你的生活从双11开始,慢下来

双11马上就来啦!是不是已经在盖楼大战中感受到了狂欢前夕弥漫的紧张感?锋梭1元预定,最高抵扣200元的活动仍在继续,决战前夕锋梭要给你最后的法宝——一份唱机秘笈,让它帮你选出双11最适合你的黑胶唱机...

西门子smart200和西门子1200ModbusTCP通讯交流

我们上节课程基于博途V16讲了西门子1200PLC和1500PLC的ModbusTCP通讯,这节课程我们讲smart系列PLC和1200系列PLC的ModbusTCP通讯,作这个实验项目必须满足以下...

国产半桥驱动芯片SLM2110S试用记(s2104半桥驱动芯片)

IR公司的IR2110S,是一片非常成熟的半桥驱动芯片,大量应用于半桥或全桥开关电源或逆变电源上。我在300-3000W的逆变器上曾用过很多,性能一直不错,电路简单,驱动卡可以做得很小,且短路保护功能...

好声音爱好者的福音,创新天猫乐活季优惠强势来袭

作为好声音爱好者,在家追剧、看电影、玩游戏的时候,你一定对声音设备有很高的要求。或者遇到居家办公处理工作情况,流畅的沟通也十分重要。因此一套专业好用的声音设备显得尤为重要。但是功能齐全、性价比高的声音...

爬虫神器-亮数据,可以轻松解锁各种网站~

网络爬虫是一种常见的数据采集技术,与屏幕抓取不同,屏幕抓取只复制屏幕上显示的像素,网络爬虫提取的是底层的HTML代码,以及存储在数据库中的数据。一般使用抓包工具获取HTML,然后使用网页解析工具提取数...

Excel实用技巧:抓取网页实时数据(excel抓取网页部分数据)

Excel是一个强大的数据处理和分析工具,可以用于处理各种类型的数据。如果你需要在Excel中获取实时数据,那么本文将为你介绍如何利用Excel抓取网页实时数据。一、安装PowerQuery插件Po...

取消回复欢迎 发表评论: