前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【08】JAVASE-面向对象-类和对象【从零开始学JAVA】

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

作者头像
用户4919348
发布2024-05-25 14:01:29
470
发布2024-05-25 14:01:29
举报
文章被收录于专栏:波波烤鸭波波烤鸭

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. 成员方法表示就是事物的行为

语法格式:

代码语言:javascript
复制
[访问权限修饰符] class 类名 {
    成员变量;
    成员方法;
}

定义一个类的步骤:

  1. 定义类名
  2. 编写类的属性
  3. 编写类的方法
代码语言:javascript
复制
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 如何创建对象

语法格式:

代码语言:javascript
复制
类名  对象名 = new 类名();
代码语言:javascript
复制
	/**
	 * 程序的入口
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		// 创建一个Dog对象
		Dog wangcai = new Dog();
		System.out.println(wangcai);
		
	}
4.2.2 如何使用对象中的属性和方法

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

  1. 引用属性: 对象名.属性
  2. 引用方法: 对象名.方法名()
代码语言:javascript
复制
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.编写一个学生类,输出学生相关的信息

代码语言:javascript
复制
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.编写一个教员类,输出相关的信息

代码语言:javascript
复制
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. 创建两个管理员类的对象,并输出他们的信息
代码语言:javascript
复制
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("退出登录...");
	}
}
代码语言:javascript
复制
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 当局部变量和成员变量重名的时候

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

代码语言:javascript
复制
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 基本数据

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

代码语言:javascript
复制
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); // 10
		
		d.change(x);// 调用Demo对象的方法 
		
		System.out.println("方法调用之后x的值为:" + x); // 10

	}

}

class Demo{
	public void change(int a){
		a += 5; // 局部变量
		System.out.println("方法中的a值:" + a); // 15
	}
}

输出的打印结果

代码语言:javascript
复制
方法调用之前x的值为:10
方法中的x值:15
方法调用之后x的值为:10
6.2 引用数据类

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

代码语言:javascript
复制
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;
}

输出结果:

代码语言:javascript
复制
方法调用之前学生的信息:张三	22
方法调用时学生的信息:小明	18
方法调用之后学生的信息:小明	18

7. 匿名对象

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

代码语言:javascript
复制
new Dog();
new Demo02().change(new Student());

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java零基础系列课程-JavaSE基础篇
  • 二、类和对象
    • 1.类和对象的概念
      • 2. Java类描述事物
        • 3.类和对象的关系
          • 4.类和对象的具体使用
            • 4.1 类的定义
            • 4.2 对象的创建和使用
            • 4.3 对象的内存分析
          • 5.局部变量和成员变量
            • 5.1 定义的位置不同
            • 5.2 在内存中的位置不同
            • 5.3 初始化值不同
            • 5.4 生命周期不同
            • 5.5 当局部变量和成员变量重名的时候
          • 6.值传递和引用传递
            • 6.1 基本数据
            • 6.2 引用数据类
          • 7. 匿名对象
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档