首页 > 编程语言 >java的基础入门学习03——抽象类与抽象方法的使用

java的基础入门学习03——抽象类与抽象方法的使用

时间:2024-09-27 14:50:49浏览次数:3  
标签:03 java abstract eat 抽象 抽象类 方法 public

文章目录

前言

首先在学习抽象类以及抽象方法之前,我们得先了解什么是抽象,抽象其实也被成为面向对象的第四大特征,abstract就是java中对应的关键字,抽象往往使用在无法指定具体行为的时候或是无法描述某一行为的时候,就需要使用抽象的概念来模糊定义这一行为。

1、抽象类

1.1 什么是抽象类

抽象类,也就是抽象的类,既然是抽象的类,那么它就无法被实例化,也就是说无法生成一个对象,但是仍然需要清楚的是抽象类是具有构造器的,那么抽象类存在的意义是什么?在实际运用中抽象类跟继承中父类承担的作用是一致的,同样是提取共有方法,保证继承关系的正确性,但是由于不能被实例化,所以抽象类一般处于继承关系的根部。其他需要注意的就是

  • 抽象类中可以编写抽象方法
  • 抽象方法只出现于抽象类中
  • 抽象类中不可以出现抽象静态方法,例如 abstract static
  • 抽象类中可以含有非抽象方法,并且可以正常被继承使用。
  • 抽象类含有构造器
  • abstract关键字只能用于修饰类、方法,不能用来修饰变量、代码块、构造器

1.2 如何使用抽象类

了解了什么是抽象类,我们在学习使用抽象类首先要明白如何定义抽象类。

public abstract class 抽象类名{}

然后在继承关系上我们就可以直接去使用extends关键字来继承抽象类。

public class 子类名 extends 抽象类名{}

而抽象类中的属性的使用只需要正常引用就行,属性的权限默认是package,其中非静态属性可以被正常继承和重写。

2、抽象方法

2.1 什么是抽象方法

抽象方法也就是那些无法被具体化或描述出来的方法,比如说吃饭,人与猫与狗等动物各不相同,那么我们不能在父类中直接把eat方法写好,只能在父类中定义,然后在子类中再来编写具体的方法。那么这跟之前的父类不是一致了吗,为什么需要使用到抽象方法呢,这是因为abstract关键字修饰的抽象方法必须被重写,这就很好的限制了子类中忘记编写父类中继承下来的没有具体编码的方法,这样就解决了继承中的方法重写问题,这也是抽象方法的意义所在。

2.2 抽象方法的使用

首先定义抽象方法十分简单

void abstract 方法名(参数);

唯一需要注意的就是抽象方法没有具体编码,所以我们只需要定义出方法即可,不需要有{},这会导致报错。至于其他的正常方法不受抽象方法影响,正常定义即可。

3、运用实例

现在设计一个抽象父类animal,让鸡鸭继承animal类,并且编写一个抽象方法eat,正常方法sing,使得各个方法按照预期运行。
抽象父类animal

public abstract class animal {
    public static String name = "动物";
    public abstract void eat();
    public void sing(){
        System.out.println("动物在叫");
    }
}

子类duck

public class duck extends animal{

    @Override
    public void eat() {
        System.out.println("鸭吃饭");
    }
}

子类chicken:

public class chicken extends animal{

    @Override
    public void eat() {
        System.out.println("鸡吃饭");
    }
}

测试类:

public class JavaTest4 {
    public static void main(String[] args) {
        chicken c = new chicken();
        duck d = new duck();
        c.sing();
        d.sing();
        d.eat();
        c.eat();
    }
}

最终按照预期运行,希望有所帮助。

标签:03,java,abstract,eat,抽象,抽象类,方法,public
From: https://blog.csdn.net/m0_74345597/article/details/142586296

相关文章

  • java的基础入门学习02-面向对象特性及使用
    文章目录前言面向对象1、什么是面向对象2、面向对象的三大特性2.1封装特性2.2继承特性2.3多态特性前言java中经常会把需要使用到的数据结构来封装成对象,而当我们这些后来希望使用前辈留下来的代码或者自己拓展功能供大家借鉴使用,面向对象是学习java中十分重要的......
  • REF3012, REF3020, REF3025, REF3030, REF3033, REF3040采用 SOT-23-3 封装的 REF30xx
    1特性•微型封装:SOT-23-3•低压降:1mV•大输出电流:25mA•高精度:0.2%•低IQ:42µA(典型值)•出色的额定温漂性能:–0°C至70°C范围内为50ppm/°C(最大值)––40°C至+125°C范围内为75ppm/°C(最大值)2应用•温度和压力发送器•便携式、电池供电类设备......
  • 给Java同仁单点的AI"开胃菜"--搭建一个自己的本地问答系统
    这是我参与创作者计划的第1篇文章大家好,因为对AI大模型很感兴趣,相信很多兄弟们跟我一样,所以最近花时间了解了一些,有一些总结分享给大家,希望对各位有所帮助;本文主要是目标是讲解如何在本地搭建一个简易的AI问答系统,主要用java来实现,也有一些简单的python知识;网上很多例子都......
  • 【Java】【SpringBoot】SpringBoot整合MybatisPlus(快速入门)
    较早之前,写了SpringBoot整合Mybatis:https://www.cnblogs.com/luyj00436/p/16701894.html。这个数据库的链接有过时。Mybatisplus是mybatis的增强工具。对比Mybatis功能强大、易于使用。对于复杂业务,需要连接多张表单,Mybatisplus不够灵活,隐藏了代码,也不能更好地调试;对于简单业务......
  • 基于Java的学生档案管理系统
    基于springboot+vue实现的学生档案管理系统 (源码+L文+ppt)4-065  第4章系统设计   4.1总体功能设计学生档案管理系统的总体功能设计包括学生信息管理、课程管理、教师信息管理、成绩管理和系统配置管理。系统将提供用户友好的界面,支持学生信息的录入、查询和......
  • 【Java】【Idea】MyBatisPlusX 的使用
    1.安装MybatisPlusX插件 2.连接数据库 3.右击,选择“MybatisX-Generator”。 4.生成设置。  ......
  • 基于Java的学生档案管理系统
     基于springboot+vue实现的学生档案管理系统 (源码+L文+ppt)4-065  第4章系统设计   4.1总体功能设计学生档案管理系统的总体功能设计包括学生信息管理、课程管理、教师信息管理、成绩管理和系统配置管理。系统将提供用户友好的界面,支持学生信息的录入、查询......
  • 基于Java的学生档案管理系统
     基于springboot+vue实现的学生档案管理系统 (源码+L文+ppt)4-065  第4章系统设计   4.1总体功能设计学生档案管理系统的总体功能设计包括学生信息管理、课程管理、教师信息管理、成绩管理和系统配置管理。系统将提供用户友好的界面,支持学生信息的录入、查询......
  • 基于Java的学生档案管理系统
     基于springboot+vue实现的学生档案管理系统 (源码+L文+ppt)4-065  第4章系统设计   4.1总体功能设计学生档案管理系统的总体功能设计包括学生信息管理、课程管理、教师信息管理、成绩管理和系统配置管理。系统将提供用户友好的界面,支持学生信息的录入、查询......
  • MySQL 8.0 为 Java 开发者提供了许多强大的新特性
    以下是一些关键点:1.通用表表达式(CTE):CTE允许您定义命名的临时结果集,这些结果集可以在后续的SELECT、INSERT、UPDATE、DELETE或CREATEVIEW语句中被引用。这对于编写复杂查询特别有用。WITHRECURSIVEemployee_hierarchyAS(SELECTid,name,manager_id,1ASlevelF......