iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java抽象类(基础详解)
  • 254
分享到

Java抽象类(基础详解)

java开发语言 2023-10-21 11:10:24 254人浏览 独家记忆
摘要

目录 1.概念 2.抽象类的使用 2.1抽象方法 2.2抽象类 2.3抽象类的使用 2.4注意事项 1.概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法,普通方法,static方法,常量和变量等内容

目录

1.概念

2.抽象类的使用

2.1抽象方法

2.2抽象类

2.3抽象类的使用

2.4注意事项

1.概念

普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法,普通方法,static方法,常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。

那么什么叫抽象方法呢?在所有的普通方法上面都会有一个"{}",这个表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法,是指,没有方法体的方法,且抽象方法必须被abstract关键字所修饰。

拥有抽象方法体的类就被成为抽象类,抽象类必须使用abstract关键字所修饰,如果一个类包含抽象方法,所以该类必须是抽象类。注意:抽象类不一定有抽象方法,但是有抽象方法的类必须定义成抽象方法。

2.抽象类的使用

2.1抽象方法

使用abstract关键字修饰的方法就是抽象方法,值得注意的是抽象方法没有方法体,只有一个方法名。基本定义格式为:

修饰符 abstract 返回值类型 方法名(参数列表);

代码举例:

public abstract void func();

2.2抽象类

如果一个类包含抽象方法,那么该类必须是抽象类。

基本定义格式为:

abstract class 类名{}

代码举例为:

public abstract void Test{    public  abstract void func();}

2.3抽象类的使用

继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类必须声明为抽象类。最终,必须有子类实现该父类的抽象方法,否则,从最初的父类到最终的子类都不能创建对象从而失去意义。

 此时可以看到,子类没有重写父类的抽象方法时,会出现编译报错,现在我们给它重写父类抽象方法后,

现在,代码就没有报错了。

同样的,我们再试试,未重写抽象方法时,子类能否创建对象并调用高抽象方法。

 报错信息很明显的提示了问题。重写之后:

abstract class Animalss{    String name = "猫咪";    abstract void eat();}class Cats extends Animalss{    @Override    void eat() {        System.out.println(name + "正在吃饭");    }}public class Test9 {    public static void main(String[] args) {        Cats cats = new Cats();        cats.eat();    }}

 运行结果为

 因此,继承抽象类的子类必须重写父类所有的抽象方法!

此时的方法重写,是子类对父类抽象方法的完成实现,我们将这种方法的重写也叫做实现方法。

2.4注意事项

关于抽象类的使用,以下为语法上要注意的细节。

抽象类不能创建对象,如果创建,会出现编译报错,只能创建其非抽象子类的对象(如果创建了抽象类对象,调用抽象的方法,但是抽象方法没有具体的方法体,就没有意义);

抽象类种=中,可以有构造方法,是供子类创建对象时,初始化父类使用的(子类的构造方法中,有默认的supepr(),需要访问父类的构造方法)

可以发现,此处编译报错,显示Employees是抽象的,不能被实例化。

我们接下来通过子类继承这个父类来试一下;

abstract class Employees{    private String name;    private int age;    public Employees(String name, int age) {        System.out.println("抽象类的构造方法已经执行!");        this.name = name;        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }}class Assit extends Employees{    private int Assit_year;    public Assit(String name, int age, int assit_year) {        super(name, age);        Assit_year = assit_year;    }    public int getAssit_year() {        return Assit_year;    }    public void setAssit_year(int assit_year) {        Assit_year = assit_year;    }}public class demo2 {    public static void main(String[] args) {        Assit assit = new Assit("Mary",20,5);    }}

代码运行结果为:

 

此时我们加上一个子类来继承这个抽象父类之后,子类的对象就能够被实例化。

抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类(不包含抽象方法的抽象类,目的就是不想让调用者实例化该对象,通常用于某些特殊的类的结构设计)。

抽象类的子类,必须重写抽象父类的所有抽象方法,否则会出现编译报错,除非该子类也是抽象类(假设不重写父类中所有的抽象方法,那么调用抽象方法会显得毫无意义) 

来源地址:https://blog.csdn.net/qq_52763599/article/details/128255452

--结束END--

本文标题: Java抽象类(基础详解)

本文链接: https://www.lsjlt.com/news/433635.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java抽象类(基础详解)
    目录 1.概念 2.抽象类的使用 2.1抽象方法 2.2抽象类 2.3抽象类的使用 2.4注意事项 1.概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法,普通方法,static方法,常量和变量等内容...
    99+
    2023-10-21
    java 开发语言
  • Java基础巩固抽象类与接口详解
    目录1、抽象类1.1、什么是抽象类1.2、抽象类的用法1.3、抽象类特点(限制条件)2、接口2.1、什么是接口2.2、接口的用法2.3、如何使用接口2.4、接口的特点(限制条件)2....
    99+
    2024-04-02
  • Java抽象类详解
    抽象类 抽象类的概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。比如: 说明 1.矩形,三角形,圆形都...
    99+
    2023-09-23
    java 开发语言
  • Java入门基础之抽象类与接口
    目录一.抽象类1.什么是抽象类2.语法规则3.抽象类的作用二.接口1.什么是接口2.语法规则3.实现多个接口4.接口之间的继承三.接口的使用实例1. Comparable 接口2.C...
    99+
    2024-04-02
  • Java 抽象类详细讲解
    目录 Java抽象类概念 Java抽象类示例 继承Animal类的子类的示例 Java抽象类详细使用方法 1、定义抽象类 2、继承抽象类 3、实现抽象方法 4、完整示例代码 Java抽象类概念 Java中抽象类是指用abstract关键...
    99+
    2023-09-04
    java jvm 开发语言 javase 面向对象
  • 一文详解Java抽象类到底有多抽象
    目录抽象类1.引出抽象类2.认识抽象类接口1.抽象类和接口的区别2.认识接口3.具体实现USB接口接口表示能力抽象类 1.引出抽象类 向上转型带来的最大的好处就是参数统一化,使用共同...
    99+
    2024-04-02
  • JAVA抽象类,接口,内部类详解
    目录一.内容抽象类抽象方法与抽象类抽象类的使用接口接口的概念接口的定义接口中的成员变量接口中的方法接口的继承接口的实现/使用接口与抽象类的差异面向接口编程内部类非静态内部类静态内部类...
    99+
    2024-04-02
  • Java面向对象基础知识之抽象类和接口
    抽象类(abstract): 抽象类不能创建实例,它只能作为父类被继承。抽象类是从多个具体类中抽象出来的父类,它具有更高层次的抽象。从多个具有相同特征的类中抽象出一个抽象类,以这个抽...
    99+
    2024-04-02
  • C++抽象基类讲解
     公众号:Coder梁(ID:Coder_LT) 这一篇文章来聊聊抽象基类(abstract base class简称ABC)。 我们之前说过,在我们实现继承的时候,需要保...
    99+
    2024-04-02
  • 详细讲解Java抽象类示例
    目录Java抽象类概念Java抽象类示例继承Animal类的子类的示例Java抽象类详细使用方法1、定义抽象类2、继承抽象类3、实现抽象方法4、完整示例代码Java抽象类概念 Jav...
    99+
    2023-05-19
    Java 抽象 抽象类
  • C++类和对象基础详解
    目录一、类和对象的基本概念结构化程序设计面向对象的程序设计使用类的成员变量和成员函数二、类和对象基础 类成员的可访问范围构造函数(constructor)基本概念拷贝(复制)构造函数...
    99+
    2024-04-02
  • 【Java 基础】类和对象 & 方法重载详解
    《Java 零基础入门到精通》专栏持续更新中。通过本专栏你将学习到 Java 从入门到进阶再到实战的全套完整内容,所有内容均将集中于此专栏。无论是初学者还是有经验的开发人员,都可从本专栏获益。 ...
    99+
    2023-10-10
    java 开发语言 后端
  • 一篇文章带你了解Java基础-抽象
    目录Java基础知识(抽象)抽象抽象定义abstract的使用定义抽象类抽象类的一些注意点总结Java基础知识(抽象) 抽象 抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃...
    99+
    2024-04-02
  • java 多态与抽象类详解总结
    目录前言多态初识多态什么是多态?多态的分类多态的必要条件实现多态向上转型向下转型instanceof运算符具体实现抽象类与抽象方法为什么要使用抽象?抽象方法抽象类前言 今天是2021...
    99+
    2024-04-02
  • Java中的类(基础详解)
    文章目录 可以有多个类,但只能有一个public类类 = 字段+方法类的构造函数我们没写构造函数的时候如果我们自己写了构造函数构造函数中 this 的使用 类的修饰符 / 控制符第一...
    99+
    2023-09-01
    java jvm c++
  • 详解Java抽象类与普通类的区别
    浅谈抽象类 在面向对象概念中,所有的对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描述对象的.如果一个类中没有足够多的信息来描述一个具体的对象,这样的类就是抽象类。 ...
    99+
    2024-04-02
  • Java基础之Object类详解
    object类的介绍 object是所有类的直接父类或者是间接父类,为什么这么说呢? 可以查询java8的API帮助文档: 可见在这样的一个类树中,所有的类的根还是Object类 ...
    99+
    2024-04-02
  • Java面向对象基础详解
    目录一、前言什么是对象?什么是类?类和对象的关系?类的定义 ?怎么创建对象?格式:创建对象的作用?Phone类下: PhoneDemo下:二、封装封装的好处?Student...
    99+
    2024-04-02
  • Java基础——类和对象
    目录 一、类和对象的基本概念 二、类与对象的定义与使用 1.创建类的语法: 2. 创建具体的对象:  3.范例(创建一个Person 类的对象)  三、static关键字   (一)static修饰属性(类属性、类变量) (二)static...
    99+
    2023-10-05
    java
  • 【Java 基础】类和对象 & 方法重载详解
    《Java 零基础入门到精通》专栏持续更新中。通过本专栏你将学习到 Java 从入门到进阶再到实战的全套完整内容,所有内容均将集中于此专栏。无论是初学者还是有经验的开发人员,都可从本专栏获益。 订阅专栏后添加我微信或者进交流群,...
    99+
    2023-08-21
    java 开发语言 后端
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作