从零学Java - 面向对象 abstract

面向对象 abstract

文章目录

  • 面向对象 abstract
    • 1.什么是抽象?
      • 1.1 生活中的抽象
    • 2.抽象类
      • 2.1 不该被创建对象的类
      • 2.2 抽象类的语法
      • 2.3 抽象类的作用
      • 2.4 抽象类的特点
    • 3.抽象方法
      • 3.1 不该被实现的方法
      • 3.2 抽象方法的语法
      • 3.3 抽象方法的特点
    • 4.总结
      • 4.1 抽象类
      • 4.2 抽象方法

1.什么是抽象?

似是而非的,像却又不是;具备某种对象的特征,但不完整。

1.1 生活中的抽象

在这里插入图片描述

搜索结果都是“动物”的子类对象,而没有“动物”对象。都是动物其中的一种,不存在“动物”的实例;

2.抽象类

2.1 不该被创建对象的类

Animal仅是一种会吃会睡的对象,再无其他行为,不够具体、不够完整。

public class Animal {private String breed;private int age;private String gender;public void eat() {System.out.println("动物开始吃东西...");}public void sleep() {System.out.println("动物开始休息...");}public void show() {System.out.println("动物信息, 品种: "+this.breed+" 年龄: "+this.age+" 性别: "+this.gender);}
}

程序是用来模拟现实世界、解决现实问题的;现实世界中存在的都是“动物”具体的子类对象,并不存在“动物”对象,所以,Animal不应该被独立创建成对象。

如何限制这种对象的创建?

2.2 抽象类的语法

概念: 被abstract修饰的类,称为抽象类。抽象类意为不够完整的类、不够具体的类,抽象类对象无法独立存在,即不能new对象

语法: public abstract class Animal {…}

eg:

//Test
public class Test {public static void main(String[] args) {Animal dog = new Dog();dog.eat();dog.sleep();dog.show();}
}//Animal
public abstract class Animal {private String breed;private int age;private String gender;public Animal() {}public Animal(String breed, int age, String gender) {this.breed = breed;this.age = age;this.gender = gender;}public void eat() {System.out.println("动物吃东西...");}public void sleep() {System.out.println("动物休息...");}public void show() {System.out.println("动物信息...");}
}//Dog
public class Dog extends Animal{private String color;public Dog() {}public Dog(String breed, int age, String gender, String color) {super(breed, age, gender);this.color = color;}@Overridepublic void eat() {System.out.println("狗狗啃骨头...");}@Overridepublic void sleep() {System.out.println("狗狗休息...");}@Overridepublic void show() {System.out.println("狗狗信息...");}
}

2.3 抽象类的作用

作用

  • 可被子类继承,提供共性属性和方法。
  • 可声明为引用,更自然的使用多态。

经验: 抽象父类,可作为子类的组成部分,依附于子类对象存在,由父类共性+子类独有组成完整的子类对象。

2.4 抽象类的特点

  • 抽象类不能new对象,但可以声明变量,可以被子类继承。
  • 抽象类中可以包含属性和非抽象方法,也可以包含抽象方法。
  • 抽象类中有构造方法,只能被子类调用。

3.抽象方法

3.1 不该被实现的方法

方法声明必要,方法实现多余。

eg:

需求:Dog中的eat()应输出“狗在吃骨头”  Cat中的eat()应输出“猫在吃鱼”
abstract class Animal {public void eat() {System.out.println("动物吃东西...");}	
}class Dog extends Animal{}
class Cat extends Animal{}

父类提供的方法很难满足子类不同需求,如不定义,则表示所有动物都不会吃、睡。如定义,略显多余,多数会被子类重写。

3.2 抽象方法的语法

概念:被abstract修改的方法,称为抽象方法,只有方法声明,没有方法实现({}的部分)。意为不完整的方法,必须包含在抽象类中

产生继承关系后,子类必须重写父类中所有的抽象方法,否则子类还是抽象类。

eg:

abstract class Animal {public abstract void eat();
}class Dog extends Animal{@Overridepublic void eat() {System.out.println("狗狗啃骨头...");}
}
class Cat extends Animal{@Overridepublic void eat() {System.out.println("猫咪吃小鱼...");}
}

3.3 抽象方法的特点

  • 抽象方法只有方法声明,没有方法实现。
  • 包含抽象方法的类一定是抽象类。
  • 抽象方法必须被子类重写,除非子类也是抽象类。

4.总结

4.1 抽象类

被abstract修饰的类

  • 抽象类不能new对象,但可以声明引用,可以被子类继承。
  • 抽象类中可以包含属性和非抽象方法,也可以包含抽象方法
  • 抽象类中可以包含构造方法,只能被子类调用。

4.2 抽象方法

被abstract修饰的方法

  • 抽象方法只有方法声明,没有方法实现。
  • 包含抽象方法的类一定是抽象类。
  • 抽象方法必须被子类重写,除非子类也是抽象类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/323872.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人生重开模拟器

前言: 人生重开模拟器是前段时间非常火的一个小游戏,接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。 网页版游戏: 人生重开模拟器 (ytecn.com) 1.实现一个简化版的人生重开模拟器 (1) 游戏开始的时…

3190个文件!10GB大小!看3D WEB轻量引擎HOOPS Communicator如何高性能读取?

前言: HOOPS Communicator是专为在云端和Web上构建工程应用程序的3D开发工具包。它针对Web工作流、浏览器和工程图形进行了优化。研发小组花了20多年的时间来研发HOOPS Visualize(本地3D可视化引擎),他们在这些工作中积累了大量计…

vue3学习 【2】vite起步和开发工具基本配置

vite的简介 官方文档 刚起步学习,所以我们只需要按照官方文档的入门流程即可。推荐阅读一下官网的为什么使用vite vite目前需要的node版本是18,可以参考上一篇文章的安装nvm,用来进行多版本的node管理。 vite安装与使用 npm create vitela…

Python基础篇: 环境安装

Python基础环境使用 一:运行环境Anaconda介绍1、Anaconda搭建1.1、下载方式1.2、安装1.3、验证是否安装成功 2、管理python环境2.1、列出所有环境2.2、创建环境2.3、进入指定虚拟环境2.4、离开虚拟环境2.5、删除虚拟环境 3、依赖管理3.1、安装依赖3.2、卸载依赖3.3、…

Android linphone-android sdk设置语音编码问题

1.遇到的问题 今天遇到linphone-android sdk需要解决语音编码问题,需要指定编码。查了下配置,里面没有发现类似的配置。 ## Start of factory rc # This file shall not contain path referencing package name, in order to be portable when app is r…

uni-app 前后端调用实例 基于Springboot 上拉分页实现

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

篮球羽毛球乒乓球体育场馆预订小程序开发

开发一款专业的小程序,用于多场馆场地的预定和管理,包括体育馆、羽毛球馆、兵乒球馆、篮球馆等各类场馆。此小程序旨在为场馆提供全方位的运营解决方案,并满足会员的不同需求。 该小程序的核心功能特性包括: 场馆管理&#xff…

小心JDK20 ZipOutputStream

Oracle 團隊竟然這麽粗心,編譯JDK 20 時ZipOutputStream沒有編譯成功就發佈了。 所以這個20版本不可以使用ZipOutputStream。 GZIPInputStream 只能做最後的壓縮,不能添加多個附件ZipEntry。 下一個版本21不存在這個問題。 try(var zipOut new ZipOu…

SSM在线手机品牌商城----计算机毕业设计

项目介绍 该项目为前后台项目,分为普通用户与管理员两种角色,前台普通用户登录,后台管理员登录; 管理员角色包含以下功能: 管理员登录,用户管理,品牌管理,子品牌管理,商品管理,订单管理,留言板管理等功能。 用户角…

智能分析网关V4太阳能风光互补远程视频智能监控方案

一、背景需求 在一些偏远地区,也具有视频监控的需求。但是这类场景中,一般无法就近获取市电,如果要长距离拉取市电,建设的成本非常高且长距离传输有安全隐患,因此风光互补远程视频监控方案的需求也较多。利用风光电转化…

Python实现PowerPoint(PPT/PPTX)到PDF的批量转换

演示文稿是一种常见传达信息、展示观点和分享内容的形式,特别是PowerPoint演示文稿,广泛应用于各行各业,几乎是演讲等场合的必备工具。然而,演示文稿也有其限制,对设备的要求较高,且使用不同的软件或设备演…

Open AI 将于下周开放 GPTs 商店,海量AI工具将会改善工作生活

为了确保 GPTs 的上架合规性和质量,OpenAI明确了以下三个条件: 合规使用政策和品牌指南: 在提交 GPTs 上架申请之前,请仔细查阅 OpenAI 的使用政策和 GPT 品牌指南。确保你的应用符合相关规定,遵循 OpenAI 的使用准则…