JAVA抽象类,抽象方法

Java中的抽象类与抽象方法 父类要体现所有子类的共同特征,在设计某些方法(行为特征或功能)时,我们发现父类中无法给出合理的具体实现,而应该交由子类来实现,那么这样的方法就应该设计为抽象方法,而包含抽象方法的类就必须为抽象类。从另一个角度说,当父类表现为更通用的概念类,以至于创建它的实例对象没有实际意义,那么这样的父类就算没有抽象方法,也应该设计为抽象类。在Java中使用关键字abstract表示抽象。 阅读详情

目录

引言

一,抽象类,抽象方法的定义

二,抽象类抽象方法的语法结构

2.1,抽象类

2.2,抽象方法

三,抽象类,抽象方法的核心

四,抽象类的使用


引言

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

        抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

        由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。

        父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

        在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。

一,抽象类,抽象方法的定义

        类用于描述现实生活中一类事物。类中有属性、方法等成员。

        父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有 意义,而方法主体则没有存在的意义了。

        某种情况下,父类只能知道子类应该具备一个怎样的方法,但是不能够明确知道如何实现该方法。只能在子类中才能确定如何去实现方法体。例如:所有几何图形都应该具备一个计算面积的方法。但是不同的几何图形计算面积的方式不同。

        我们把没有方法主体的方法称为抽象方法。Java语法规定,包含抽象方法 的类就是抽象类。

二,抽象类抽象方法的语法结构

2.1,抽象类

        包含抽象方法的类。如果一个类包含抽象方法,那么该类必须是抽象类,使用 abstract 关键字修饰。

public abstract class 类名 {
    //抽象类中可以包含变量、常量,抽象方法,非抽象方法
}

2.2,抽象方法

         只有方法的声明,没有方法体,即没有{},以分号 ; 结尾,使用 abstract 关键字修饰:


    //抽象方法
	修饰符 abstract 返回值类型 方法名(参数列表);
	public abstract void run();
	
    //非抽象方法
    public abstract void run(){}

三,抽象类,抽象方法的核心

1、抽象类声明时abstract class 类名{}

2、抽象类不能直接实例化,使用时是实例抽象类的子类

3、抽象类是可以有抽象方法 abstract void show(); 没有方法体

4、A a = new B();声明B类时继承了A类,A是父类,B是子类,也有可能你类是abstract抽象类

5、抽象方法是不能私有的private修饰

6、有抽象方法的类必须抽象类,抽象类可有抽象方法,也可有普通方法,也可以没有抽象方法 

  • InputStream is = new FileInputStream(); InputStream 是抽象类,FileInputStream类是继承的子类 
  • 类 = 静态段 初始化段 属性 方法 class 类名{} 
  • 抽象类 = 静态段 初始化段 属性 方法 [抽象方法] abstract class 类名{}

7、抽象更像一种编程规范,一般是项目经理,架构师编写的多。

四,抽象类的使用

        抽象类不能实例化,不能直接创建对象。抽象类是用来被继承的,继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类,使用 abstract 关键字修饰。

        抽象类也是类,因此原来类中可以有的成员,抽象类都可以有,那么抽象类不能直接创建对象,为什么还有构造器呢?供子类调用,子类创建对象时,需要为从父类继承的属性初始化。

        抽象类不能使用final修饰。

写一个父类

//抽象类-父类
public abstract class Person {
    //抽象类的字段只要正常使用就好了,默认访问权限是package
    static String name = "小明";
    //非静态字段可以被继承和重写
    int age = 18;

    //抽象类可以有非抽象非静态方法,在其子类中可以被继承和重写
    public void say() {
        System.out.println("我爱打篮球");
    }
    //抽象类可以有非抽象静态方法,在其子类中可以被继承和隐藏-子类不能重写该方法,只能继承和隐藏。

    public static void eat() {
        System.out.println("抽象类中的静态方法");
    }
    
    //抽象方法只能存在于抽象类中,它没有方法体,必须在子类中具体实现:
    // 注意:
    //     1.抽象类甚至可以没有抽象方法(抽象类的关键是不能实例化而不是抽象方法!);
    //     2.没有所谓的抽象静态方法(abstract static,这样的事情你永远也不要尝试!)

    public abstract void printInfo();
}

写一个子类,继承父类

//子类,继承父类(抽象类)
//注意:
//     1、子类继承父类(抽象类),必须重写父类所有的抽象方法,否则,子类也要使用 abstract 关键字修饰,变成抽象类;
//     2、父类(抽象类) 中的非抽象非静态方法,可以被重写,也可以不重写,隐藏掉。
//     3、父类(抽象类) 中的非抽象静态方法,不能被重写。
public class Student extends Person{
    //自动获得从父类继承来的成员字段
    static String name="小黑";
    int age=20;

    //1、重写父类的抽象方法;
    //2、要想子类不是抽象类,必须重写。
    @Override
    public void printInfo() {
        System.out.println("抽象方法被重写");
    }

    //1、重写父类的普通方法-非静态,非抽象方法。
    //2、该方法可重写,可不重写。
    @Override
    public void say() {
        System.out.println("普通方法被重写了");
    }
}

最后写一个测试类

//测试类
public class Test {
    public static void main(String[] args) {
        //此句会报错,因为不能实例化一个抽象类
        //Person person = new Person();

        //实例化抽象类的子类
        Student s = new Student();
        //向上转型
        Person p= new Student();

        System.out.println("子类测试====================");
        System.out.println("s.name:: "+s.name);
        System.out.println("s.age:: "+s.age);
        s.say();
        s.printInfo();
        Person.eat();

        System.out.println("向上转型,抽象类测试====================");
        System.out.println("p.name: "+p.name);
        System.out.println("p.age: "+p.age);
        p.say();
        p.printInfo();
        Person.eat();
    }
}

参考:七、java中的抽象类和抽象方法详解_java什么是抽象_TTDreamTT的博客-优快云博客

Java中抽象类与抽象方法、abstract的使用 抽象类与抽象方法、abstract的使用 阅读详情

相关推荐

Java面向对象(高级)-- 抽象类与抽象方法(或abstract关键字)

Java面向对象(高级)-- 抽象类与抽象方法(或abstract关键字)

人生得意须尽欢 567

【JAVA】《接口,抽象方法,抽象类 》之二 、抽象方法详解

接口中的方法通常都是抽象方法,但自从 Java 8 开始,接口也可以包含默认方法(Default Method)和静态方法(Static Method)。如果一个类继承了抽象类或实现了接口,并且其中包含抽象方法,**那么子类必须实现这些抽象方法,除非子类自己也声明为抽象类。类分别实现了该方法,提供了自己的面积计算逻辑。这样,无论是圆还是矩形,都可以通过统一的方法来计算它们的面积。在编写代码时,应该根据具体的需求和设计原则来合理使用抽象方法,确保代码的清晰、可读和易于维护。抽象方法不能是私有的或静态的。

代码的魅力,根本走不出来 1856

JAVA抽象类、抽象方法

类的继承的作用主要在于可以扩充已有类的功能,子类继承后可以任意选择是否实现父类的方法,想实现就实现,不想实现就不实现。换句话说,父类无法对子类是否实现自己的某个方法做强制的约定。要想强制子类必须实现父类的某个方法,在设计时就需要考虑抽象类。 一、抽象类的定义 抽象类主要是对子类中覆写方法进行约定,在抽象类中可以定义一些抽象方法来实现这些约定。抽象方法是指abstract关键字定义且无方法体的方...

456

java抽象方法

java抽象方法用abstract来进行声明,抽象类是一种介于普通类和接口之间的类,它可以包含抽象方法、非抽象方法、构造方法、静态方法和成员变量,抽象类可以包含具体实现的方法,这些方法可以提供通用的行为或默认的实现,供其子类直接使用。子类可以选择性地重写这些方法,以覆盖父类提供的默认实现;在java中接口是是一种抽象类型并不是一个类,可以从一个类可以实现多个接口而类只能继承一个可以看出,接口中方法都是抽象方法,如果一个类实现了一个接口,则必须实现该接口所有抽象方法,除非是抽象类,

Fyfdf的博客 1214

求助:有没有基于pscad的锂电池仿真模型

求助:有没有基于pscad的锂电池仿真模型 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变没有 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写...

qq_38922523的博客 1222

UniApp实战:5分钟搞定后台持续定位与轨迹实时更新(附完整代码)

本文详细介绍了在UniApp中实现后台持续定位与动态轨迹地图系统的完整方案。针对物流配送、运动健身等场景,文章深入讲解了权限申请、坐标系选择、定位防抖优化、地图轨迹线(polyline)实时绘制等核心步骤,并提供了可复用的完整代码,帮助开发者高效解决App切后台定位停止、轨迹漂移等常见难题。

weixin_29266679的博客 483

java中抽象类和抽象方法

苹果这个具体的水果,它具有的属性为,红色;它具有的方法为,被啃。那么,水果,这个定义,不知阁下又该如何应对?很明显,这是一个抽象的概念,是苹果、香蕉、桃子......的集合,而水果具备的方法,被吃,又该如何描述?是像苹果一样直接啃,核扔掉?还是像香蕉一样拨开皮,吃掉里面的果肉?在java中,可以将苹果视为一个类,水果这种抽象的概念即为抽象类;苹果这个类中,方法,被啃,可以具体执行。水果这个抽象类,方法,被吃,无法具体执行,怎么吃?啃?剥皮?切开?被吃,这个抽象类中的方法即为抽象方法。

weixin_74141222的博客 2829

RHCA III之路---EX436-1

由于ha这门课有大量命令需要在3个节点上同步执行.如果执行history会出现前面数字,复制多行会有些麻烦.lab环境是nodea,nodeb,nodec 考试环境是node1,node2,node3。就可以快速将历史命令实现可多行复制,当然也可以用awk进行分割,个人喜好随意。技巧只能加快答题速度,对考试得分帮助不大。确认3个红框内容一致,且没报错即可。再执行一个histrory。3个node节点上运行。这样就能1次复制3行。

Q先生 1002

什么是抽象方法 java_java抽象类和抽象方法

一、什么是抽象类和抽象方法没有具体功能的实现,通过子类继承后重写方法来实现一定约束的类称之为抽象类,抽象类必须被abstract修饰。抽象方法就是只有方法声明,没有方法体的方法。抽象类的使用一般通过继承来实现二、为什么需要抽象类和抽象方法引用抽象方法和抽象类,是java提供的一种语法工具,引导使用者正确的使用它们,减少误用。相当于对子类进行一定限制。三、抽象类和抽象方法的语法规则及其注意事项抽象类...

weixin_31750655的博客 1万+

[网络安全自学篇] 六十八.WannaCry勒索病毒复现及分析(二)MS17-010利用及病毒解析

这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了通过Python利用永恒之蓝漏洞加载WannaCry勒索病毒,并实现对Win7文件加密的过程,但过程较为复杂,为什么不直接利用永恒之蓝呢?所以,这篇文章将直接分享MSF利用MS17-010漏洞进行反弹Shell,再上传勒索病毒进行实验复现,并详细讲解WannaCry勒索病毒的原理。基础性文章,希望对您有所帮助。

杨秀璋的专栏 1万+

基于本机知识库 + 豆包(火山引擎)+ MCP的落地方案

最小 MVP:本地知识库 + Doubao Embedding + 简单检索。工具化:把检索/写入/系统功能通过 MCP 封装。Agent 编排:RAG 流程 + 自检 + 引用输出。这样你就可以快速落地一个基于豆包 + 本机知识库的 MCP Agent。

lpfasd123的博客 1095

java抽象方法声明_java抽象类和抽象方法

一、什么是抽象类和抽象方法没有具体功能的实现,通过子类继承后重写方法来实现一定约束的类称之为抽象类,抽象类必须被abstract修饰。抽象方法就是只有方法声明,没有方法体的方法。抽象类的使用一般通过继承来实现二、为什么需要抽象类和抽象方法引用抽象方法和抽象类,是java提供的一种语法工具,引导使用者正确的使用它们,减少误用。相当于对子类进行一定限制。三、抽象类和抽象方法的语法规则及其注意事项抽象类...

weixin_42614269的博客 7005

手把手教你学Simulink--基于飞轮储能系统的场景实例:飞轮储能与锂电池混合储能系统的协同控制

本文详细介绍了基于Simulink的飞轮储能与锂电池混合储能系统协同控制建模方法。通过高通/低通滤波器实现功率分配,使飞轮处理高频波动(±100kW),锂电池承担削峰填谷(50kW)。仿真结果表明,该系统效率达88%,锂电池循环次数减少90%,投资成本比纯电池方案节省200万美元。文章包含完整的建模步骤、控制策略设计和多场景仿真分析,为构建高效、长寿、经济的智能储能系统提供了实用解决方案。

MHD0815的博客 342

Java中抽象类及其抽象方法

抽象类:public abstract class 类名{}抽象方法:public abstract 返回值类型 方法名(参数列表);

m0_67575174的博客 1173

光学传播仿真软件:SPEOS_(14).建筑物内光环境仿真

在建筑物内光环境仿真中,材料属性的定义直接影响光的传播和反射效果。SPEOS提供了丰富的材料库,但也可以自定义材料属性以满足特定需求。创建新材料选择Materials->。输入材料名称和类型。配置材料属性选择材料对象,打开属性编辑器。设置反射率、透射率、表面粗糙度和颜色。# 导入SPEOS模块# 创建新材料# 配置材料属性custom_material.set_reflectivity(0.8) # 设置反射率为0.8。

kkchenjj的博客 1245

手把手教你学SIMULINK模块库文件专栏-From Workspace 模块详解

模块是 Simulink 中的一个信号源模块,用于从 MATLAB 工作区加载数据作为输入信号。该模块允许用户将预先在 MATLAB 中生成的数据(如时间序列、矩阵或结构体)导入到 Simulink 模型中,从而实现更灵活的信号输入和仿真控制。通过深入了解其参数的影响及结合 MATLAB 脚本的应用,读者可以更加有效地利用这一模块进行仿真和研究。此外,通过实际应用场景的扩展以及常见问题解答部分的帮助,能够更好地掌握。模块是一个非常灵活的工具,适用于需要从 MATLAB 工作区加载数据的各种场景。

MHD0815的博客 631

Java抽象类和抽象方法

abstract是抽象的意思,用于修饰方法方法和类,修饰的方法是抽象方法,修饰的类是抽象类。

m0_61196886的博客 1040

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Java抽象类与抽象方法

本文详细介绍了Java中抽象类与抽象方法的概念以及使用方法,同时与Java接口进行了对比,分析二者不同的使用场景。

yizhiermu的博客 1232

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java抽象类中的方法都是抽象方法吗_抽象方法必须在抽象类中吗

抽象方法必须在抽象类中吗2020-07-01 15:01:18文/叶丹1、抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。2、Final类中的属性和方法都必须被final修饰符修饰。3、最终类不能派生子类,最终方法不能被覆盖。4、子类要调用父类的方法,必须使用super关键字。抽象方法:java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的...

weixin_31518415的博客 1万+

java中的抽象类与抽象方法

定义抽象类是一个不能被实例化的类,即不能使用new关键字来创建抽象类的实例。抽象类主要用于定义一些通用的属性和方法,但这些方法的具体实现细节则由它的子类来提供。特点抽象类使用abstract关键字来声明。抽象类中可以包含抽象方法和非抽象方法。如果一个类中包含抽象方法,那么这个类必须被声明为抽象类。抽象类不能被实例化,即不能使用new关键字来创建抽象类的实例。仅作为一种特殊的父类,让子类继承并实现。抽象类可以有子类,子类可以选择是否实现抽象类中的抽象方法。

2301_79842503的博客 1161

java抽象方法和抽象类

abstract是抽象的意思,用于修饰方法方法和类,修饰的方法是抽象方法,修饰的类是抽象类。

wuwei52013141的博客 387

java抽象类。抽象类里面的抽象方法必须被子类全部复写

抽象类:包含抽象方法的类称为抽象类。 抽象方法:只声明而未实现的方法称为抽象方法。必须使用abstract关键字声明。 *抽象类和抽象方法都必须使用abstract关键字声明。 *抽象方法只声明,不需要定义。 *抽象类不能声明对象,必须被继承。 *抽象类中的抽象方法必须被子类全部覆写才能够使用。 如下: publicclassMain { pub

kaka 1万+

java抽象类中必须有抽象方法吗_011 抽象类必须要有抽象方法吗?

抽象类必须要有抽象方法吗?答:不需要,抽象类不一定有抽象方法;但是包含一个抽象方法的类一定是抽象类。(有抽象方法就是抽象类,是抽象类可以没有抽象方法)解释:抽象方法:java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。抽象方法与抽象类:当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重...

weixin_28834169的博客 5178

java抽象类与抽象方法_Java 抽象类和抽象方法

Java 抽象类和抽象方法在本教程中,我们将学习Java中的抽象。我们将学习Java抽象类和方法,以及如何在程序中使用它们。Java 抽象类抽象类是无法实例化的类(我们无法创建抽象类的对象)。在Java中,我们使用abstract关键字声明一个抽象类。abstractclassAnimal{//属性和方法}如果尝试创建抽象类的对象,则会出现编译错误。例如,Animala1=newAn...

weixin_27964579的博客 621
上一篇: JAVA类的继承
下一篇: JAVA接口类-interface
涵冰...
博客等级 码龄4年 2438粉丝 243原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涵冰...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值