类和对象

2023-10-31

面向对象-类和对象

数据存储方面:

​ **变量:**只能存储一个 如果内容多了 存储起来需要定义n个变量 麻烦

​ **数组:**可以存储一组相同数据类型的数据。

数据类型相同:

​ 如果用数组存储一个人的信息/比较丰富的信息的话,不太方便。

​ 例如:吃货联盟中存储订单和菜品信息。

​ 纵向数组:我们定义了好多个数组,认为不同数组中,索引相同的数据,都是同一个信息。

升级:不方便,所以想存储更多元化的数据,我们这阶段学习对象,它可以存储数据。

​ **长度不可变:**未来第三阶段要学习集合,它可以解决这问题。

对象:

编码方面:(程序的架构)

​ **面向过程开发:**想让它干嘛,你就写对应的代码。你在写吃货联盟的时候,需要展示菜品或订单信息,你就将那一堆的代码,放那儿就可以了。(代码无法重用,扩展性差,可维护性差,阅读性差)

面向方法/功能/函数开发: 本阶段我们会将以前重复的代码,按功能切分,抽取成为一个方法。以后直接调用方法即可快速实现功能。

面向对象开发(OOP): (xx卖煎饼->升职加薪->迎娶高富帅开酒店)

1. 掌握类和对象的关系

什么是对象?

万物皆对象。你身边的任何一个,你可以叫的出名或者可以单独区分出来的一个实体,它就是对象。

**对象:**描述客观事物的一个实体,它由一组属性和方法构成。

​ **属性(特征):**描述一个对象的信息。

​ 例如:姓名、年龄、性别、游戏中的法防、物防、法功、家族、帮派、称号…

​ **方法(操作):**描述一个对象的行为。

​ 例如:猫吃鱼、狗吃肉、奥特曼专打小怪兽。

什么是类?

**类:**人类、鸟类、非人类,分类…

​ 由一组具有相同属性(不是指属性值一样,而是指属性名,例如:学生对象都有姓名、年龄等属性)和相同行为的对象中抽取出来的一个抽象的概念(分类)。

**类和对象的关系:**类是对象的一个模板,对象是类的一个具体实例。

程序中对象和类

**编程:**将现实生活中的场景以计算机指令的形式描述出来。

Java是一个完全面向对象的编程语言。(因为Java中有基本数据类型 byte short int long float double boolean char…)。

所有的Java程序都是以类为组织单元。

2. 掌握如何定义类(对象的模板)

类是一个引用数据类型。

一个类并不是必须要有main方法!main方法是程序的入口!一个程序只要有一个main方法作为程序入口即可!(大门只有一个!)

public class 类名{
    // 一组属性
    
    // 一组方法
}
public class HelloWorld{
    public static void main(String[] args){
        syso(xxx);
    }
}
/**
 * 学生类  是学生对象的一个模板
 * @author Charles7c
 * 2019年1月9日 下午2:57:22
 */
public class Student {

	// 一组属性/成员变量/[实例(对象)]变量
	/** 姓名 */
	public String name;
	/** 年龄 */
	public int age;
	/** 体重 */
	public double weight;
	/** 学号 */
	public int id;
	
	// 一组方法/成员方法
	/** 学习 */
	public void study() {
		System.out.println(name+"在学习!");
	}
	
	/** 自我介绍 */
	public void printInfo() {
		System.out.println("姓名:"+name);
		System.out.println("年龄:"+age);
		System.out.println("体重:"+weight);
		System.out.println("学号:"+id);
	}
	
}

在Eclipse中,Ctrl+Shift+T 可以全局搜索类。

注意事项:

1.  一个.java文件中可以定义多个类,但是只能有一个类被public修饰,被public修饰的类,它的类名和文件名保持一致。(在无特殊情况一个.java文件只写一个类)
2.  一个类并不是必须要有main方法,同样一个类也不是必须要有一堆属性和一堆方法,这些属性和方法到时候是根据我们的需求决定。
3.  定义类的信息时候也要注意好对齐和规范。

3. 掌握如何定义对象

语法:类名 对象名 = new 类名();
只有new一个对象 才可以对她设置set 方法
类名 对象名 =“”/null;再进行set方法 会报空指针异常

public class Test {

	public static void main(String[] args) {
		
		// 创建对象
		// Scanner scanner = new Scanner(System.in);
		// 创建学生对象
		Student stu = new Student();
		// 创建老师对象
		Teacher teacher = new Teacher();
		
		// 给对象的属性赋值(存储一些信息)
		stu.name = "xxx";
		stu.age = 18;
		stu.id = 700;
		stu.weight = 180;
		
		// 给老师信息赋值
		teacher.name = "x老师";
		teacher.major = "COT";
		teacher.gender = '女';
		teacher.teachAge = 30;
		
		// 使用属性值
		System.out.println(teacher.name);
		// 调用方法
		stu.printInfo();
		stu.study();
		System.out.println("----------------------");
		teacher.printInfo();
		
	}

}

4. 熟悉基本的方法定义(下一章才是重点)

**方法:**就是一个代码的组合,是一个功能。

// 通过用户名和密码获取用户信息

getUserByUsernameAndPassword()

初识方法的基本的语法:

权限修饰符  返回值类型  方法名(){
    // 方法体
}

今天我们学习的方法 没有返回值类型,没有返回值类型的话 定义为void(空、无效的)

方法调用的注意事项:

1. 同一个类中(不包含static情况),调用方法只需要直接写`方法名();`即可。同一个类中,你都看到它了,调用一下很简单。
2. 不同的类中(不包含static情况),方法间相互调用,需要先创建对象,然后`对象名.方法名();`不同类中,你不创建对象,我怎么知道你是谁的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类和对象 的相关文章

随机推荐

  • 【中文】【吴恩达课后编程作业】Course 4 - 卷积神经网络 - 第二周作业

    中文 吴恩达课后编程作业 Course 4 卷积神经网络 第二周作业 Keras入门与残差网络的搭建 上一篇 课程4 第二周测验 回到目录 下一篇 课程4 第三周测验 资料下载 下载1 本文所使用的资料已上传到百度网盘 点击下载 15 97
  • 【小程序】为什么使用let that=this

    this 会随着上下文环境而变换它的指向 在当前作用域中设置一个变量用来存储 this 可以防止在其他地方找不到 this 的错误 一般情况 举个例子 btn click function var that this 这里this和that
  • react项目:react拦截器和token问题

    登录获取token后 如何对后面的接口统一在请求头header里面设置token 让后面的请求header都带有token axios拦截器 interceptor 作用 当一个请求发出的时候 会先流过 interceptors 的 req
  • virtualbox禁用硬件虚拟化_Mac版Virtualbox6.1开启嵌套虚拟化

    Virtualbox从6 0版本后 支持起了Intel cpu的嵌套虚拟化 很多用Virtualbox的朋友开始陷入了茫然 为何在BIOS或EFI中开启了CPU硬件虚拟化后 Virtualbox中的vm菜单中启用嵌套虚拟化的框还是灰色不可用
  • 我一下子说出4种分布式ID生成方案,把面试官给搞懵了!

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 上一篇文章 我们聊了一下分库分表相关的一些基础知识 具体可以参见 支撑日活百万用户的高并发系统 应该如何设计其数据库架构 这篇文章 我们就接着分库分表的知识 来具体聊
  • 在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)

    对于游戏公司而言 采用游戏脚本lua python等进行开发也很常见 但是很多童鞋对脚本并没有很熟悉的概念 本篇则向大家简单介绍脚本的用途以及在Cocos2dx基础用法 Lua和python这些详细介绍的话 请不太熟悉的童鞋自行百度百科哈
  • 50道SQL练习题及答案与详细分析:

    流传较广的50道SQL训练 奋斗了不知道多久终于写完了 前18道题的难度依次递增 从19题开始的后半部分算是循环练习和额外function的附加练习 难度恢复到普通状态 第9题非常难 我反正没有写出来 如果有写出来了的朋友还请赐教 这50道
  • 教育平台的线上课程智能推荐策略

    题目来自 http www tipdm org 一 背景 近年来 随着互联网与通信技术的高速发展 学习资源的建设与共享呈现出 新的发展趋势 各种网课 慕课 直播课等层出不穷 各种在线教育平台和学习 应用纷纷涌现 尤其是 2020 年春季学期
  • 用Python学习吴恩达机器学习——梯度下降算法理论篇

    开篇词 CSDN专供 欢迎阅读我的文章 本文起先是在B站上进行投稿 一开始是采用吴恩达机器学习2012年版的 目前已经出了十二期了 现在我决定将我摸索出来的学习笔记在各个平台上进行连载 保证同时更新 半年已过 谁知道AI领域已发生很大的变数
  • ajax获取500,使用Python请求库500获取Ajax Json输出

    import requests import json class Yurtici object baseUrl http www yurticikargo com ajaxRoot1 layouts ArikanliHolding Yur
  • 模板之特化与偏特化

    C 模板 C 模板提供了对逻辑结构相同的数据对象通用行为的定义 这些模板运算对象的类型不是实际的数据类型 而是一种参数化的类型 C 模板分为类模板和函数模板那 类模板示例 template
  • MySQL的binlog功能详解

    什么是binlog binlog日志用于记录所有更新了数据或者已经潜在更新了数据 例如 没有匹配任何行的一个DELETE 的所有语句 语句以 事件 的形式保存 它描述数据更改 binlog作用 因为有了数据更新的binlog 所以可以用于实
  • MySQL主从复制

    1 基础环境配置 1 修改主机名 使用hostnamectl命令修改2台主机的主机名 root localhost hostnamectl set hostname db1 root localhost bash root db1 root
  • 干货-YOLOv5检测烟火

    火灾是一种常见的自然灾害和事故 经常给人们的生命财产安全带来威胁 在人力无法及时发现火灾的情况下 火势可能迅速扩散 造成不可挽回的损失 因此 及时发现火灾并采取有效的救援措施至关重要 利用计算机视觉技术检测火灾具有以下意义 提高火灾检测效率
  • 深入理解Socket套接字:必要的参数详解

    深入理解Socket套接字 必要的参数详解 文章目录 深入理解Socket套接字 必要的参数详解 引言 1 1 简介 1 2 Socket套接字的作用 Socket套接字的创建 2 1 Socket函数 2 2 Socket函数参数详解 S
  • 完美的mysql备份脚本

    转自 https www cnblogs com leffss p 7832047 html bin bash 全备方式 一般在从机上执行 适用于小中型mysql数据库 删除15天以前备份 作者 fafu li 时间 2015 08 10
  • 【全栈开发指南】OAuth2授权获取token调试接口的方式

    在我们实际应用接口的调用调试过程中 需要用到token或者刷新token GitEgg支持OAuth2 0协议进行认证授权 这里介绍说明如何通过Postman获取token和refresh token并进行接口调试 1 使用密码模式获取to
  • win10禁用windows更新

    Windows 10系统中有一项Update Orchestrator Service 更新协调器办事 在当地办事窗口中 我们发现 Update Orchestrator Service 状态的启动类型为灰色 无法进行点击修改 2 禁用Wi
  • ESB产品Oracle数据库升级说明

    ESB企业服务总线平台作为支撑企业综合集成的产品 在应用集成 数据集成 数据治理等解决方案都发挥着非常重要的作用 随着产品和解决方案的不断优化和升级 ESB企业服务总线平台功能需要逐步进行完善 不断提升产品功能的完备性 易用性和全面性 为了
  • 类和对象

    面向对象 类和对象 数据存储方面 变量 只能存储一个 如果内容多了 存储起来需要定义n个变量 麻烦 数组 可以存储一组相同数据类型的数据 数据类型相同 如果用数组存储一个人的信息 比较丰富的信息的话 不太方便 例如 吃货联盟中存储订单和菜品