首页 > 编程语言 >java 抽象类

java 抽象类

时间:2025-01-19 14:59:05浏览次数:3  
标签:java 子类 抽象 抽象类 父类 方法 public

​ 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了(因为子类对象会调用自己重写的方法)。换句话说,父类可能知道子类应该有哪个功能,但是功能具体怎么实现父类是不清楚的(由子类自己决定),父类只需要提供一个没有方法体的定义即可,具体实现交给子类自己去实现。我们把没有方法体的方法称为抽象方法。Java语法规定,包含抽象方法的类就是抽象类

  • 抽象方法 : 没有方法体的方法。
  • 抽象类:包含抽象方法的类。

1. 抽象类的定义

抽象类是一个不能直接实例化的类,它为其他类提供了一种通用的结构。通过抽象类,开发者可以定义一些方法的框架,而具体的实现则交给子类。

语法

abstract class ClassName {
    // 抽象方法(没有方法体)
    public abstract void abstractMethod();

    // 普通方法(可以有方法体)
    public void normalMethod() {
        System.out.println("This is a normal method.");
    }
}
  • abstract:用于定义抽象类或抽象方法。
  • 抽象类:包含抽象方法和具体方法(已实现的方法)。
  • 抽象方法:声明没有方法体的函数,表示该方法在子类中必须被实现。

2. 抽象类的特点

如果一个类包含抽象方法,那么该类必须是抽象类。注意:抽象类不一定有抽象方法,但是有抽象方法的类必须定义成抽象类。

abstract class 类名字 { 
  
}
public abstract class Animal {
    public abstract void run();
}

3. 抽象方法

抽象方法是没有方法体的,只有方法签名。子类必须实现所有的抽象方法,除非子类是抽象类。

抽象方法的定义:

abstract void myMethod();

子类实现抽象方法:

class ConcreteClass extends AbstractClass {
    @Override
    void myMethod() {
        System.out.println("Implemented myMethod in the subclass");
    }
}

3 抽象类的使用

要求:继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。

// 父类,抽象类
abstract class Employee {
	private String id;
	private String name;
	private double salary;
	
	public Employee() {
	}
	
	public Employee(String id, String name, double salary) {
		this.id = id;
		this.name = name;
		this.salary = salary;
	}
	
	// 抽象方法
	// 抽象方法必须要放在抽象类中
	abstract public void work();
}

// 定义一个子类继承抽象类
class Manager extends Employee {
	public Manager() {
	}
	public Manager(String id, String name, double salary) {
		super(id, name, salary);
	}
	// 2.重写父类的抽象方法
	@Override
	public void work() {
		System.out.println("管理其他人");
	}
}

// 定义一个子类继承抽象类
class Cook extends Employee {
	public Cook() {
	}
	public Cook(String id, String name, double salary) {
		super(id, name, salary);
	}
	@Override
	public void work() {
		System.out.println("厨师炒菜多加点盐...");
	}
}

// 测试类
public class Demo10 {
	public static void main(String[] args) {
		// 创建抽象类,抽象类不能创建对象
		// 假设抽象类让我们创建对象,里面的抽象方法没有方法体,无法执行.所以不让我们创建对象
//		Employee e = new Employee();
//		e.work();
		
		// 3.创建子类
		Manager m = new Manager();
		m.work();
		
		Cook c = new Cook("ap002", "库克", 1);
		c.work();
	}
}

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

抽象类存在的意义

​ 抽象类存在的意义是为了被子类继承,否则抽象类将毫无意义。抽象类可以强制让子类,一定要按照规定的格式进行重写。

标签:java,子类,抽象,抽象类,父类,方法,public
From: https://blog.csdn.net/qq_48763502/article/details/145193443

相关文章

  • Java-抽象方法
    抽象方法:●抽象方法:将共性的行为(方法)抽取到父类之后。由于每一个子类执行的内容是不一样,所以,在父类中不能确定具体的方法体。该方法就可以定义为抽象方法。●抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类●抽象方法的定义格式:publicabstract返回值类型方......
  • java—接口
    接口:是一种规则,是对行为的抽象。接口的定义和使用接口用关键字interface来定义publicinterface接口名{}接口不能实例化接口和类之间是实现关系,通过implements关键字表示publicclass类名implements接口名{}接口的子类(实现类)要么重写接口中的所有抽象方法要么是抽......
  • leetcode——三数之和(java)
    给你一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0。请你返回所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。示例1:输入:nums=[-1,0,1,2,-1,-4]输......
  • Java初学者笔记-05、集合框架
    集合体系集合是可变长的。Collection:代表单列集合,每个元素包含一个值。Map:代表双列集合,每个元素包含两个值。Collection集合List系列集合:添加的元素是有序、可重复、有索引。ArrayList、LinekdList:有序、可重复、有索引。Set系列集合:添加的元素是无序、不重复、无索......
  • 基于java+springboot的搞笑视频分享浏览小程序
    课题说明以下是基于Java+SpringBoot的搞笑视频分享浏览小程序的介绍:这个小程序利用Java语言和SpringBoot框架开发,为用户打造了一个轻松有趣的搞笑视频分享和浏览平台。用户可以在平台上上传各种搞笑视频,系统会对视频进行存储和管理,包括对视频的分类(如短剧、段......
  • java 方法的定义
    什么是方法(类似于函数)System.out.println()//调用系统out中的println方法类对象方法方法的定义及调用方法定义:修饰符:public,static,....返回值:int,void...方法名:驼峰命名规则参数类型:(形参—用来定义参数add(inta,intb)——inta,intb),(实参—实际传递......
  • 集成工作流的后台管理系统,springboot集成activiti,Java集成工作流审批流,vue后台管理系
     前言这是一套集成了工作流的后台管理系统,工作流做到了在线流程图设计,发布,绑定业务表单进行流程流转,整个流程的控制,审批,会签,驳回,挂起等。后台管理的功能有:系统管理,表单设计,工作台等。拿过去你可以做什么:可以直接在上面进行业务的开发,比如可以直接做请假申请,报销申请单等。......
  • 社区团购管理系统,Java+Vue,源码+文档
    前言:社区团购管理系统是一个集成了多种功能的综合性平台,旨在提高团购活动的效率和管理水平。以下是针对系统的九个主要管理模块的详细解释:一、个人中心个人中心是用户的个人信息管理区域。主要功能包括:用户资料编辑:允许用户修改个人信息,如姓名、联系方式、地址等。账户安全......
  • 免费送源码:Java+ssm+MySQL SSM宁夏地区自助旅游管理系统 计算机毕业设计原创定制
     摘 要本论文主要论述了如何使用SSM框架开发一个自助旅游管理系统,严格按照软件开发流程进行各个阶段的工作,采用B/S架构JAVA技术,面向对象编程思想进行项目开发。在引言中,作者将论述自助旅游管理系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各......
  • 宿舍管理信息系统【控制台+MySQL】(Java课设)
      客官进来看一眼呗,有惊喜!【帮你解决烦恼】:Java课设和计Java毕设太难不会做怎么办?系统类型控制台类型+Mysql数据库存储数据使用范围适合作为Java课设!!!部署环境jdk1.8+Mysql8.0+Idea或eclipse+jdbc运行效果本系统源码地址:宿舍管理信息系统【控制台+MySQL】(Java课设)资......