【08】JAVASE-面向对象-类和对象【从零开始学JAVA】

embedded/2024/9/23 18:11:47/

Java零基础系列课程-JavaSE基础篇

Lecture:波哥

在这里插入图片描述

  Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。

二、对象

​ 现实世界是由什么组成的?

在这里插入图片描述

​ 世界是由对象组成的

在这里插入图片描述

1.对象的概念

对象:是具体的事物

:是对对象的抽象

对象:张三、李四、王五、赵六

抽取上述对象的相同的部分:

​ 年龄、姓名、身高、体重、打牌、去隔壁老王家、唱歌、跳舞、打王者荣耀、吃鸡…

天使

具体的四个天使对象

在这里插入图片描述

抽象u 他们的 共同 的特点

  1. 带翅膀(带翅膀的不一定是天使,也可能是鸟人)
  2. 女孩
  3. 善良

2. Java描述事物

​ 目前我们已经可以用计算机来表示八大基本数据型,但是我们在开发的时候还要存储其他的数据,比如 一个人,一条狗,一张图片,一个视频等等,这种情况我们应该怎么实现?

​ 我们学习编程语言的目的就是为了模拟现实世界的事物,实现信息化。其实呢在计算中使用Java语言模拟现实时间是很简单的,Java为我们提供了 ,所有Java是通过 来描述世界的

现实生活中如何描述一个事物:

  1. 属性 该事物的特征描述
  2. 行为 方法,该事物的动作行为

举个栗子描述:表示一条狗

  1. 属性 狗的品种 狗的颜色 狗的体重
  2. 行为 跳 叫 睡 吃

我们学习Java语言的最基本单位是,在Java中使用 来描述事物

3.对象的关系

是抽象的,是一组相关的属性和行为的集合,可以看出一个模板

对象对象是具体的,是客观存在的实例,是该事物的具体体现

举例: 老婆 翠花 = new 老婆();

: 老婆 是一个

对象: new 老婆(); 是一个对象, 取了一个名字叫 翠花

引用 叫 翠花相当于叫了老婆对象

在这里插入图片描述

对象的特征:

属性:对象具有的各个特征

每个对象的每个属性都拥有特定值

在这里插入图片描述

行为:对象执行的操作

在这里插入图片描述

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

列举出图片中的这辆跑车的属性和方法

在这里插入图片描述

列举出下图小狗的属性和行为

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

是抽象的概念,仅仅是模板,比如说: 人

对象是一个你能够看得到。摸得着的具体的实体

4.对象的具体使用

4.1 的定义

的理解:

  1. 是用于来描述实现事物的
  2. 是抽象
  3. 是一个模板,是属性和方法的集合
  4. 是Java中最基本的单位
  5. Java中使用class描述

Java中使用class描述

  1. 成员变量表示就是事物的属性
  2. 成员方法表示就是事物的行为

语法格式:

java">[访问权限修饰符] class {成员变量;成员方法;
}

定义一个的步骤:

  1. 定义
  2. 编写的属性
  3. 编写的方法
java">package com.bobo.oop;/*** [访问权限修饰符] class 名 {成员变量;成员方法;}* @author dpb**/
public class OOPDemo01 {public static void main(String[] args) {}
}class Dog{// --- 定义相关的属性// 姓名String name;// 年龄int age;// 颜色String color;// --- 定义相关的行为  方法public void eat(){System.out.println("吃大骨头...");}public void jump(){System.out.println("跳跃...");}}

4.2 对象的创建和使用

对象的理解:

  1. 对象是客观存在的,是具体的
  2. 万事万物皆对象
  3. 对象是通过刻画出来的
  4. 对象又叫实例,对象,引用,变量
4.2.1 如何创建对象

语法格式:

java">对象= new ();
java">	/*** 程序的入口* * @param args*/public static void main(String[] args) {// 创建一个Dog对象Dog wangcai = new Dog();System.out.println(wangcai);}
4.2.2 如何使用对象中的属性和方法

对象创建出来了,如果调用相关的属性和方法呢?在Java中引用对象的成员:使用 ’ . ’ 进行操作

  1. 引用属性: 对象名.属性
  2. 引用方法: 对象名.方法名()
java">package com.bobo.oop;/*** [访问权限修饰符] class 名 {成员变量;成员方法;}* @author dpb**/
public class OOPDemo01 {/*** 程序的入口* * @param args*/public static void main(String[] args) {// 创建一个Dog对象Dog wangcai = new Dog();System.out.println(wangcai);System.out.println(wangcai.name);System.out.println(wangcai.age);System.out.println(wangcai.color);wangcai.name = "wangcai";wangcai.age = 3;wangcai.color = "白色";System.out.println(wangcai.name);System.out.println(wangcai.age);System.out.println(wangcai.color);// 成员方法的调用wangcai.eat();wangcai.jump();}
}class Dog{// --- 定义相关的属性// 姓名String name;// 年龄int age;// 颜色String color;// --- 定义相关的行为  方法public void eat(){System.out.println("吃大骨头...");}public void jump(){System.out.println("跳跃...");}}
4.2.3 课堂案例

1.编写一个学生,输出学生相关的信息

在这里插入图片描述

java">package com.bobo.oop;public class OOPDemo02 {public static void main(String[] args) {Student zs = new Student();zs.printInfo();}}
// 定义一个学生
class Student{// 定义相关的属性  姓名 年龄 班级 爱好String name;int age;String className;String hobby;// 定义相关的行为  打印学生信息public void printInfo(){System.out.println("name="+name+"\t age="+age + "\t className="+className+"\t hobby="+hobby);}
}

2.编写一个教员,输出相关的信息

在这里插入图片描述

java">package com.bobo.oop;public class OOPDemo03 {public static void main(String[] args) {// 获取教员对象Teacher zl = new Teacher();zl.teacherName = "张三丰";zl.major = "数学";zl.printInfo();}}class Teacher{String teacherName; // 姓名String major; // 专业String course; // 课程String teachingAge; // 教龄public void printInfo(){System.out.println("teacherName:" + teacherName+ "\t major:" + major+ "\t course:" + course + "\t teachingAge:" + teachingAge);}}

3.定义一个管理员

  1. 定义一个管理员Administrator
  2. 定义其相关的属性和方法
  3. 定义一个测试TestAdministrator
  4. 创建两个管理员对象,并输出他们的信息
java">package com.bobo.oop;/*** 管理员*    属性:*        账号*        密码*    行为:*        登录*        注销* @author dpb**/
public class Administrator {// 账号String userName;// 密码String password;/*** 判断账号密码是否正确* @return*/public boolean login(){System.out.println("账号登录...");if("zhangsan".equals(userName) && "123".equals(password)){return true;}return false;}public void logout(){System.out.println("退出登录...");}
}
java">package com.bobo.oop;public class TestAdministrator {/*** 创建两个管理员对象,并输出他们的信息* @param args*/public static void main(String[] args) {Administrator admin = new Administrator();admin.userName = "zhangsan";admin.password = "123";System.out.println(admin.userName + "\t" + admin.password);Administrator root = new Administrator();root.userName = "lisi";root.password = "111";System.out.println(root.userName + "\t" + root.password);}}

4.3 对象的内存分析

在这里插入图片描述

5.局部变量和成员变量

变量分为局部变量和成员变量,这两种型的变量也是容易让大家混淆的地方,所以我们在此处详细介绍他们的区别:

5.1 定义的位置不同

成员变量:定义在体以内,方法体以外

局部变量:定义在方法体内或者声明在方法上(形参)

在这里插入图片描述

5.2 在内存中的位置不同

成员变量:在堆内存中存储

局部变量:在栈区中存储

在这里插入图片描述

在这里插入图片描述

5.3 初始化值不同

成员变量:有默认值

局部变量:没有默认值,所有局部变量在使用之前必须赋值

在这里插入图片描述

5.4 生命周期不同

生命周期:一个变量从创建到销毁的全过程

成员变量:随着对象的创建而创建,随着对象的销毁而销毁,具体的结束时间是在垃圾回收器空闲的时候销毁

局部变量: 随着方法的调用而创建,随着方法的执行结束而销毁

5.5 当局部变量和成员变量重名的时候

当局部变量和成员变量重名的时候,局部变量优先于成员变量(就近原则)

java">package com.bobo.oop02;public class OOPDemo01 {/*** 局部变量和成员变量* @param args*/public static void main(String[] args) {Dog dog = new Dog();System.out.println(dog.dogName);System.out.println(dog.dogAge);System.out.println(dog.dogColor);int x;int y;dog.dogName = "旺财";System.out.println(dog.dogName);dog.eat();}}// String dogHobby; 成员变量不能定义到 体之外
// 定义一个Dog Java
class Dog{// 成员变量public String dogName;public int dogAge;public String dogColor;// 定义一个方法public void eat(){System.out.println("--->"+dogName); // 成员变量String dogName = "小黑";System.out.println(dogName); // 局部变量// 。。。return ;}public void jump(){//System.out.println(a);}
}

6.值传递引用传递

6.1 基本数据

基本数据型作为形式参数,形参的改变不会影响实际参数,传递的是值本身

java">package com.bobo.oop02;public class OOPDemo02 {public static void main(String[] args) {Demo d = new Demo();int x = 10;System.out.println("方法调用之前x的值为:" + x); // 10d.change(x);// 调用Demo对象的方法 System.out.println("方法调用之后x的值为:" + x); // 10}}class Demo{public void change(int a){a += 5; // 局部变量System.out.println("方法中的a值:" + a); // 15}
}

输出的打印结果

方法调用之前x的值为:10
方法中的x值:15
方法调用之后x的值为:10

6.2 引用数据

引用数据型作为参数,形参的改变影响实际参数,传递的是地址值

java">package com.bobo.oop02;public class OOPDemo03 {public static void main(String[] args) {Student t = new Student();t.name = "张三";t.age = 22;System.out.println("方法调用之前学生的信息:" + t.name + "\t" + t.age);Demo02 d = new Demo02();// 调用了方法d.change(t);System.out.println("方法调用之后学生的信息:" + t.name + "\t" + t.age);}}class Demo02{public void change(Student s){s.name = "小明";s.age = 18;System.out.println("方法调用时学生的信息:" + s.name + "\t" + s.age);}
}class Student{String name;int age;
}

输出结果:

方法调用之前学生的信息:张三	22
方法调用时学生的信息:小明	18
方法调用之后学生的信息:小明	18

在这里插入图片描述

7. 匿名对象

​ 没有名次的对象我们称为匿名对象

java">new Dog();
new Demo02().change(new Student());

匿名对象的特点:对象只会被使用一次,作为调用者来说,之后就获取不到这个对象

如果对象只需要使用一次的话,那么我们就可以使用匿名对象

匿名对象一旦使用完成就会自动释放,节约内存资源

作为实际参数传递的时候会比较方便。


http://www.ppmy.cn/embedded/26844.html

相关文章

2024五一杯数学建模B题思路分析 - 未来新城背景下的交通需求规划与可达率问题

文章目录 1 赛题选题分析 2 解题思路详细的思路过程放在文档中 ! ! !!!!!3 最新思路更新 1 赛题 B题 未来新城背景下的交通需求规划与可达率问题 随着城市化的持续发展,交通规划在新兴城市建设中显得尤为关…

【信息系统项目管理师知识点速记】确认范围过程与控制质量过程的区别

确认范围过程与控制质量过程的不同之处: 确认范围过程: 定义: 确认范围是正式验收已完成的项目可交付成果的过程。目的: 确认可交付成果已圆满完成,并通过正式验收。重点: 关注于客户或发起人审查可交付成果,确认其已完成,并进行正式验收。时机: 在项目的最后阶段进行…

HDFS存取策略联系

书上关于这部分分了三个点: 1.数据存放 2.数据读取 3.数据复制 但数据存放和数据复制都是数据写操作过程中的,“存放”体现一种思想,“复制”体现过程,整个数据写操作过程如下: 1.分块:当客户端写入一个…

【MyBatis】 MyBatis框架下的高效数据操作:深入理解增删查改(CRUD)

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【MyBatis】 MyBatis框架下的高效数据操作:深入理解增删查改(CRUD) 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 My …

【蓝桥杯】第十五届蓝桥杯C/C++B组省赛补题

文章目录 估分试题 A: 握手问题试题 B: 小球反弹试题 C: 好数试题 D: R 格式试题 E: 宝石组合试题 F: 数字接龙试题 G: 爬山试题 H: 拔河 估分 测试网址:民间测试数据 5 0 9 5 2 5 18 2 46 5 0 9 5 2 5 18 2 46 50952518246 试题 A: 握手问题 #inc…

bun 换源 国内阿里源 npmmirror 加速下载

Github https://github.com/oven-sh/bun 版本号 bun 1.1.5 windows 安装 bun 如果本机有 nodejs 环境, 可以 npm install -g bun 安装 ( 官方把 exe 已经传到了 npm 仓库, 走的国内 npm 镜像, 下载速度会很快) 没有 nodejs, 可以用 powershell 脚本安装 具体操作 全局 …

四、线段、矩形、圆、椭圆、自定义多边形、边缘轮廓和文本绘制(OpenCvSharp)

功能实现: 对指定图片上进行绘制线段、矩形、圆、椭圆、自定义多边形、边缘轮廓以及自定义文本 一、布局 用到了一个pictureBox和八个button 二、引入命名空间 using System; using System.Collections.Generic; using System.Drawing; using System.Windows.F…

【JAVA进阶篇教学】第九篇:MyBatis-Plus用法介绍

博主打算从0-1讲解下java进阶篇教学,今天教学第九篇:MyBatis-Plus用法介绍。 在 MyBatis-Plus 3.5.0 中,LambdaQueryWrapper支持多种条件构造方式,除了等于(eq)、不等于(ne)、大于&a…