Java学习教程,从入门到精通,Java对象和类语法知识点(20)
1、Java对象和类语法知识点
-
类的定义
- 使用
class
关键字定义类。 - 类名通常使用大写驼峰命名法(PascalCase)。
- 类与对象
- 类是创建对象的模板或蓝图,它定义了对象的属性和行为。
- 对象是类的实例,它包含了类定义的数据(属性)和行为(方法)。
- 使用
-
成员变量
- 类中定义的变量称为成员变量或属性。
- 可以使用访问修饰符(如
private
,public
,protected
)控制访问权限。
-
构造方法
- 与类名相同且没有返回类型的方法称为构造方法。
- 用于在创建对象时初始化对象的状态。
-
方法
- 类中定义的函数称为方法。
- 方法可以包含参数和返回类型。
-
对象的创建
- 使用
new
关键字和类的构造方法创建对象。 - 对象是对类的一个实例。
- 使用
-
访问对象的成员
- 使用
.
运算符访问对象的成员变量和方法。
- 使用
-
封装
- 使用
private
关键字隐藏类的属性。 - 提供
public
的getter和setter方法访问属性。
- 使用
-
继承
- 使用
extends
关键字让一个类继承另一个类。 - 子类可以访问父类的
public
和protected
成员。
- 使用
-
多态
- 允许一个引用变量在不同情况下指向不同类型的对象。
- 通过方法重写(使用
@Override
注解)实现。
-
抽象类和接口
- 抽象类不能被实例化,可以包含抽象方法和具体方法。
- 接口是完全抽象的类,只能包含抽象方法(从Java 8开始,接口也可以有默认方法和静态方法)。
案例代码
以下是一个简单的Java程序,演示了上述知识点:
// 定义一个抽象类
abstract class Animal {// 抽象方法public abstract void makeSound();// 具体方法public void move() {System.out.println("The animal moves.");}
}// 定义一个接口
interface Swimmer {void swim();
}// 定义一个具体类,继承抽象类并实现接口
class Dog extends Animal implements Swimmer {// 成员变量private String name;private int age;// 构造方法public Dog(String name, int age) {this.name = name;this.age = age;}// 重写抽象类中的抽象方法@Overridepublic void makeSound() {System.out.println("The dog barks.");}// 实现接口中的方法@Overridepublic void swim() {System.out.println("The dog is swimming.");}// 自定义方法public void displayInfo() {System.out.println("Dog name: " + name + ", Age: " + age);}// Getter和Setter方法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;}
}
public class Main {public static void main(String[] args) {// 创建Dog对象Dog myDog = new Dog("Buddy", 5);// 访问成员变量和方法myDog.displayInfo();myDog.makeSound();myDog.move();myDog.swim();// 使用setter方法修改成员变量myDog.setAge(6);// 使用getter方法获取成员变量System.out.println("Dog's new age: " + myDog.getAge());}
}
解释
- 抽象类
Animal
:定义了一个抽象方法makeSound()
和一个具体方法move()
。 - 接口
Swimmer
:定义了一个抽象方法swim()
。 - 具体类
Dog
:- 继承
Animal
类,因此必须实现makeSound()
方法。 - 实现
Swimmer
接口,因此必须实现swim()
方法。 - 定义了成员变量
name
和age
,以及相应的构造方法、getter和setter方法。 - 定义了一个自定义方法
displayInfo()
来显示狗的信息。
- 继承
Main
类:包含main
方法,用于创建Dog
对象并调用其方法。
通过这个程序,你可以看到如何定义类、创建对象、访问成员变量和方法、实现继承和多态、以及使用抽象类和接口。
当然可以,以下是一些具体的Java对象和类的案例代码,涵盖了不同的应用场景:
案例一:地址类(Address)
这个案例定义了一个Address
类,用于表示地址信息,包括国家、省份、城市、街道和邮编。
class Address {private String country;private String province;private String city;private String street;private String zipcode;// 默认构造方法public Address() {}// 带参数的构造方法public Address(String country, String province, String city, String street, String zipcode) {this.country = country;this.province = province;this.city = city;this.street = street;this.zipcode = zipcode;}// 获取完整地址信息的方法public String getInfo() {return "国家:" + this.country + "、省份:" + this.province + "、城市:" + this.city + "、街道:" + this.street + "、邮编:" + this.zipcode;}// Getter和Setter方法(省略)
}public class AddressDemo {public static void main(String[] args) {Address address = new Address("中国", "北京市", "海淀区", "中关村大街", "100080");System.out.println(address.getInfo());}
}
案例二:员工类(Employee)
这个案例定义了一个Employee
类,用于表示员工信息,包括编号、姓名、基本薪水和薪水增长率。
class Employee {private long empno;private String empname;private double salary;private double rate;// 默认构造方法public Employee() {}// 带参数的构造方法public Employee(long empno, String empname, double salary, double rate) {this.empno = empno;this.empname = empname;this.salary = salary;this.rate = rate;}// 计算薪水增长额的方法public double salaryIncValue() {return this.salary * this.rate;}// 计算工资总额的方法public double salaryIncResult() {this.salary = this.salary * (1 + this.rate);return this.salary;}// 获取员工信息的方法public String getInfo() {return "员工编号:" + this.empno + "、员工姓名:" + this.empname + "、基本工资:" + this.salary + "、工资增长率:" + this.rate;}// Getter和Setter方法(省略)
}public class EmployeeDemo {public static void main(String[] args) {Employee employee = new Employee(9527L, "张三", 8000.0, 0.1);System.out.println(employee.getInfo());System.out.println("工资增长额度:" + employee.salaryIncValue());System.out.println("上调后工资额度:" + employee.salaryIncResult());}
}
案例三:抽象类和接口的应用
这个案例展示了如何使用抽象类和接口来设计更灵活的类结构。
// 定义一个抽象类
abstract class Shape {// 抽象方法public abstract double area();
}// 定义一个接口
interface Drawable {void draw();
}// 具体类,继承抽象类并实现接口
class Circle extends Shape implements Drawable {private double radius;public Circle(double radius) {this.radius = radius;}// 实现抽象类中的抽象方法@Overridepublic double area() {return Math.PI * radius * radius;}// 实现接口中的方法@Overridepublic void draw() {System.out.println("Drawing a circle with radius " + radius);}
}public class ShapeDemo {public static void main(String[] args) {Circle circle = new Circle(5.0);System.out.println("Area of the circle: " + circle.area());circle.draw();}
}
案例四:多态性的应用
这个案例展示了Java中的多态性,即同一个引用类型可以指向不同类型的对象。
class Animal {void makeSound() {System.out.println("Some generic animal sound");}
}class Dog extends Animal {@Overridevoid makeSound() {System.out.println("Bark");}
}class Cat extends Animal {@Overridevoid makeSound() {System.out.println("Meow");}
}public class PolymorphismDemo {public static void main(String[] args) {Animal myDog = new Dog(); // 多态:Animal类型的引用指向Dog对象Animal myCat = new Cat(); // 多态:Animal类型的引用指向Cat对象myDog.makeSound(); // 输出:BarkmyCat.makeSound(); // 输出:Meow}
}
这些案例涵盖了Java中类和对象的基本用法,包括类的定义、构造方法、方法、封装、继承、多态、抽象类和接口等关键概念。通过这些案例,你可以更好地理解Java面向对象编程的精髓。
相关文章:

Java学习教程,从入门到精通,Java对象和类语法知识点(20)
1、Java对象和类语法知识点 类的定义 使用class关键字定义类。类名通常使用大写驼峰命名法(PascalCase)。类与对象 类是创建对象的模板或蓝图,它定义了对象的属性和行为。对象是类的实例,它包含了类定义的数据(属性&am…...

金融场中的量化交易:民锋数据驱动策略的优势解析市
随着科技的发展,量化交易成为金融市场的重要组成部分。民锋公司通过智能算法和大数据分析,设计了一系列量化交易策略,帮助投资者实现科学投资。本文将探讨民锋在数据驱动策略上的优势,并展示如何通过量化模型在复杂的市场中获得收…...

Docker 配置镜像加速
docker 拉取代码时出现 ERROR: failed to solve: node:16: unexpected status from HEAD request to https:// xxxxxx.mirror.aliyuncs.com/v2/library/node/m…...

HTTP慢速攻击原理及解决办法
目录 引言 HTTP慢速攻击原理 解决办法 Nginx Tomcat 华宇TAS IIS 结论 引言 HTTP慢速攻击(Slow HTTP Attack)是一种拒绝服务攻击(DoS),攻击者通过故意缓慢地发送HTTP请求来耗尽服务器资源,导致合法…...

【系统面试篇】进程和线程类(1)(笔记)——区别、通讯方式、同步、互斥、锁分类
目录 一、问题综述 1. 进程和线程的区别? 2. 进程的状态有哪些? 3. 进程之间的通信方式? (1)管道 (2)消息队列 (3)共享内存 (4)信号量 (…...

[C++]——哈希(附源码)
目录 编辑 编辑 一、前言 二、正文 2.1 unorder系列关联式容器 2.1.1 unordered_map 2.1.1.1 unorderer_map的介绍 ①unordered_map的构造 ②unordered_map的容量 ③unordered_map的迭代器 ④unordered_map的元素访问 ⑤unordered_map的查询 ⑥unordered_map的修改操…...

2024中国自动化大会(CAC2024)“智慧化工及复合人才培养”平行会议圆满落幕
2024中国自动化大会于11月1-3日在青岛举行,本次大会由中国自动化学会主办,青岛科技大学(简称“青科大”)承办。北京和隆优化科技股份有限公司(简称“和隆优化”)承办了重要的“智慧化工及复合人才培养”平行…...

计算机毕业设计——ssm基于JAVA的求职招聘网站的设计与实现演示录像 2021
作者:程序媛9688开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等。 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题)࿰…...

跨平台Flutter 、ReactNative 开发原理
一、跨平台Flutter开发原理 Flutter是一个跨平台的应用程序开发框架,它允许你使用一组代码库来构建同时运行在Android和iOS上的应用程序。 1.1.Flutter的核心原理基于以下几点: Dart异步、Widget构建块灵活配置、自工化工具链、热重载、Skia图库、Dar…...

qt QToolBar详解
1、概述 QToolBar是Qt框架中的一个控件,用于在工具栏中显示一组操作按钮和其他控件。它提供了一种方便的方式来组织和管理应用程序中的工具和操作。工具栏通常位于软件或应用程序界面的上方,包含一系列常用工具和命令按钮,用于快速访问和执行…...

MongoDB基础介绍以及从0~1语法介绍
目录 MongoDB 教程导读 NoSQL 简介 关系型数据库遵循ACID规则 分布式系统 分布式计算的优点 分布式计算的缺点 什么是NoSQL? 为什么使用NoSQL ? RDBMS vs NoSQL NoSQL 简史 CAP定理(CAP theorem) NoSQL的优点/缺点 BASE ACID vs BASE N…...

利用Docker Compose构建微服务架构
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 利用Docker Compose构建微服务架构 引言 Docker Compose 简介 安装 Docker Compose 创建项目结构 编写 Dockerfile 前端 Dockerf…...

数据中台一键大解析!
自从互联玩企业掀起了数据中台风,数据中台这个点马上就火起来了,短短几年数据中台就得到了极高的热度,一大堆企业也在跟风做数据中台,都把数据中台作为企业数字化转型的救命稻草,可是如果我告诉你数据中台并不是万能钥…...

MySQL45讲 第十六讲 “order by”是怎么工作的?
文章目录 MySQL45讲 第十六讲 “order by”是怎么工作的?一、引言二、全字段排序(一)索引创建与执行情况分析(二)执行流程(三)查看是否使用临时文件 三、rowid 排序(一)参…...

智慧商城项目-VUE2
实现效果 项目收获 通过本项目的练习,可以掌握以下内容: 创建项目 ##基本创建 基于 VueCli 自定义创建项目架子,并对相关的配置进行选择 vue create demo-shopping调整目录 删除文件 删除初始化的一些默认文件 src/assets/logo.pngsrc/components…...

音视频入门基础:FLV专题(22)——FFmpeg源码中,获取FLV文件音频信息的实现(中)
本文接着《音视频入门基础:FLV专题(21)——FFmpeg源码中,获取FLV文件音频信息的实现(上)》,继续讲解FFmpeg获取FLV文件的音频信息到底是从哪个地方获取的。本文的一级标题从“四”开始。 四、音…...

Chrome与火狐哪个浏览器的性能表现更好
在数字时代,浏览器是我们日常生活中不可或缺的工具。无论是工作、学习还是娱乐,一个好的浏览器都能显著提高我们的效率和体验。市场上有许多优秀的浏览器,其中Google Chrome和Mozilla Firefox无疑是最受欢迎的两款。本文将比较这两款浏览器的…...

uniapp在js方法中,获取当前用户的uid(uni-id-user)表中的用户id
// 1.判断当前用的权限 let uid uniCloud.getCurrentUserInfo().uid //获取当前用户的uid // 用户uid等于发布者id或者用户权限等于admin或者用户角色等于webmaster if (uid this.item.user_id[0]._id || this.uniIDHasRole…...

影响神经网络速度的因素- FLOPs、MAC、并行度以及计算平台
影响神经网络速度的四个主要因素分别是 FLOPs(浮点操作数)、MAC(内存访问成本)、并行度以及计算平台。这些因素共同作用,直接影响到神经网络的计算速度和资源需求。 1. FLOPs(Floating Point Operations&a…...

【万字详解】如何在微信小程序的 Taro 框架中设置静态图片 assets/image 的 Base64 转换上限值
设置方法 mini 中提供了 imageUrlLoaderOption 和 postcss.url 。 其中: config.limit 和 imageUrlLoaderOption.limit 服务于 Taro 的 MiniWebpackModule.js , 值的写法要 ()KB * 1024。 config.maxSize 服务于 postcss-url 的…...

复合选择器,CSS特性,背景属性,显示模式(HTML)
目录 复合选择器,CSS特性,背景属性,显示模式知识点: 练习一: 练习二: 复合选择器,CSS特性,背景属性,显示模式知识点: 复合选择器:后代选择器 :父选择器 子选择器(中间用空格隔开) eg:对div中的span进行设置,会对后代中的所有span都进行设置 选中所有后代(后代选择器.html)…...

加密货币行业与2024年美国大选
加密货币行业经历了近十年的飞速发展,尤其是在比特币、以太坊等主要加密资产的兴起之后,越来越多的美国人开始将其视为一种财富积累或交易的工具。然而,尽管这一新兴行业的市场规模在持续扩大,但加密货币仍面临着重重监管难题&…...

Hive SQL中判断内容包含情况的全面指南
Hive SQL中判断内容包含情况的实用指南 在 Hive SQL 的数据处理与分析世界里,判断字段是否包含特定内容是一项非常重要的操作。今天,我将为大家详细介绍 Hive SQL 中实现这一功能的多种方法,并附上相应的表创建和数据插入语句。 一、准备工作 - 表创建与数据插入 首先,我…...

匿名管道 Linux
目录 管道 pipe创建一个管道 让子进程写入,父进程读取 如何把消息发送/写入给父进程 父进程该怎么读取呢 管道本质 结论:管道的特征: 测试管道大小 写端退了,测试结果 测试子进程一直写,父进程读一会就退出 …...

苍穹外卖WebSocket无法建立连接 (修改前端代码)
我在部署nginx 反向代理服务器时,把80端口改成了90端口(不与80端口的Tomcat冲突)。 但黑马的资料里定义了前端连接nginx的端口号默认为80,造成连接不上的问题,此时只需要修改前端的端口号,使其知道如何连接到修改后的后端端口。 …...

音频内容理解
音频内容理解是音频处理和理解领域的一个重要方向,它涉及到从环境声音中提取语义信息,并能够对这些声音进行解释和描述。以下是音频内容理解的几个关键应用: 1. 音频问答(Audio Question Answering, AQA) 在这个任务…...

MQTT实用示例集:Air201版
今天贴出的是Air201版关于MQTT实用示例集,希望大家喜欢。 本示例教你通过使用脚本代码,对Air201模组进行MQTT链接操作。 操作例程包括: MQTT单链接 MQTT多链接 MQTT SSL不带证书链接 MQTT SSL带证书链接 大家可根据自身需求,…...

Day23 opencv图像预处理
图像预处理 在计算机视觉和图像处理领域,图像预处理是一个重要的步骤,它能够提高后续处理(如特征提取、目标检测等)的准确性和效率。OpenCV 提供了许多图像预处理的函数和方法,常见的操作包括图像空间转换、图像大小调…...

优化模型训练过程中的显存使用率、GPU使用率
参考:https://blog.51cto.com/u_16099172/7398948 问题:用小数据集训练显存使用率、GPU使用率正常,但是用大数据集训练GPU使用率一直是0. 小数据: 大数据: 1、我理解GPU内存占用率显存使用率,由模型的大小…...

RocketMQ学习笔记
RocketMQ笔记 文章目录 一、引言⼆、RocketMQ介绍RocketMQ的由来 三、RocketMQ的基本概念1 技术架构2 部署架构 四、快速开始1.下载RocketMQ2.安装RocketMQ3.启动NameServer4.启动Broker5.使⽤发送和接收消息验证MQ6.关闭服务器 五、搭建RocketMQ集群1.RocketMQ集群模式2.搭建主…...