11.javase_面向对象1

news2025/1/11 20:56:21

一.面向对象介绍
1.1并不是一个技术,而是一种编程指导思想
1.2以什么形式组织代码;以什么思路解决问题
1.3为什么要用面向对象编程:
因为生活中,我们解决问题时,就是采用这种指导思想去解决的。
所以,我们写程序去解决问题时,如果也能采用这种指导思想就会使编程变得非常简单,程序也便于人理解

1.4 面向对象理解伪代码
public class Test{
	public static void main(Stringl] args){
		老师 t= new 老师();  //找一个老师
		试卷 s= t.出题();    //老师出试卷
		学生 stu = new 学生(); //找一个学生
		stu.考试(s);          //学生考试
		t.批卷(s);            //老师批改试卷
	}
}
1.5面向对象,重点学习什么?
	一点:学习如何自己设计对象并使用
	二点:学习获取已有对象并使用

二.类和对象
2.1 什么是类
类是对现实生活中一类具有共同属性和行为的事物的抽象
2.2 什么是对象
是能够看得到摸的着的真实存在的实体
2.3小结
类是对象的抽象(学生类),对象是类的实体(学生小明)
2.4对象的属性和行为
属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值(手机:品牌,价格,内存)
行为:对象能够执行的操作(手机:打电话,发短信)

三.类的定义
3.1 类是什么:
是对现实生活中一类具有共同属性和行为的事物的抽象,确定对象将会拥有的属性和行为
3.2类的组成:属性和行为
属性:在类中通过成员变量来体现(类中方法外的变量)
行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
3.3类的定义步骤:
步骤1:定义类 (public class 类名 {})
步骤2:编写类的成员变量 (变量1的数据类型 变量1;)
步骤3:编写类的成员方法 (方法1;)
public class 类名 {
// 成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;

// 成员方法
方法1;
方法2;

}
3.4 类的定义具体案例:

public class Phone {
			//成员变量
			String brand;
			int price;
			
			//成员方法
			public void call() {
				System.out.println("打电话");
			}
			public void sendMessage() {
				System.out.println("发短信");
			}
		}
3.5 对象的使用
  创建对象
	格式:类名 对象名 = new 类名();
	范例:Phone p = new Phone();
  使用对象
	使用成员变量
	  格式:对象名.变量名
	  范例:p.brand
	使用成员方法
	  格式:对象名.方法名(参数)
	  范例:p.call()
  对象使用具体案例:
public class PhoneDemo {
			public static void main(String[] args) {
				//创建对象
				Phone p = new Phone();
				//使用成员变量
				p.brand = "小米";
				p.price = 2999;
				System.out.println(p.brand);
				System.out.println(p.price);
				//使用成员方法
				p.call();
				p.sendMessage();
			}
		}

四.学生类的定义和使用
需求:定义一个学生类,然后定义一个学生测试类,在学生测试类中通过对象完成成员变量和成员方法的使用
/* 定义一个学生类 */

public class Student {
		//成员变量
		String name;
		int age;
		//成员方法
		public void study() {
			System.out.println("好好学习");
		}
		public void doHomework() {
			System.out.println("多做练习");
		}
	}
/* 定义一个学生测试类,通过对象完成成员变量和成员方法的使用 */
public class StudentDemo {
		public static void main(String[] args) {
			//创建对象
			Student s = new Student();
			//给成员变量赋值
			s.name = "林青霞";
			s.age = 30;
			System.out.println(s.name+","+s.age);
			//调用成员方法
			s.study();
			s.doHomework();
		}
	}

五.Java 内存分配
Java程序在运行时,需要在内存中分配空间。
为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
5.1Java 内存分配
在这里插入图片描述

5.2栈和堆
在这里插入图片描述

栈(虚拟机栈)
	所有局部变量都会在栈内存中创建
	局部变量:定义在方法中的变量或者方法声明上的变量
	方法执行都会加载到栈中进行
	局部变量特点:随着方法的调用而存在,随着方法的调用完毕而消失
	代码:Student s = new Student();
堆
	所有对象及其对应的实例变量和数组都将存储在此处
	简单理解为:new出来的东西,都存储在堆内存
	每一个new出来的东西都有一个地址值,使用完毕,会在垃圾回收器空闲时被回收
	实例变量(成员变量)有初始化值:
	基本数据类型:整数:0,浮点数:0.0,布尔:false,字符:空字符
	引用数据类型:null

5.3单个对象内存图
在这里插入图片描述
在这里插入图片描述

5.4多个对象内存图
在这里插入图片描述

5.5多个引用指向相同
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Codeforces Round #792 (Div. 1 + Div. 2)

比赛链接:Dashboard - Codeforces Round #792 (Div. 1 Div. 2) - Codeforces A: 思维 题意:Alice和Bob在玩游戏,每次等Alice交换两个不同位置的数后,Bob就会删除最后一个位置上的数,当最终只剩下一个数后&#xff0c…

基于对抗互信息学习特征解耦的零样本语音转换|INTERSPEECH 2022

零样本语音转换在转换时只需目标说话人的一段语音,更适合实际应用需求,具有广泛应用前景。 现有工作只考虑内容和音色表征的解耦,没有考虑与语音旋律相关的 韵律 和 音高 表征,导致与音高和韵律相关的信息泄露到音色中。 本文利用…

Flutter - Stack 与 Positioned 层叠布局

1 层叠布局和 Web 中的绝对定位、Android 中的 Frame 布局是相似的 2 子组件可以根据距父容器四个角的位置来确定自身的位置。 3 层叠布局允许子组件按照代码中声明的顺序堆叠起来。 4 Flutter中使用Stack和Positioned这两个组件来配合实现绝对定位。 5 Stack允许子组件堆叠&am…

什么是数据为先营销?为什么它对市场部如此重要?

数据为先营销希望能帮助各地的市场人员与高管们建立联系,实现这些商业目标,并真正学会如何适当地跟踪一切数据,这样他们就知道自己是否真的达到了收入目标,ROI,这些商业目标,而不是仅仅说我们是被数据驱动型…

先进的数字隔离技术提高了太阳能逆变器的可靠性

介绍 一个多世纪以来,化石燃料发电设施一直被证明是坚固可靠的能源,但这些久经考验的电力设施规模大、复杂,而且建造成本越来越高。以最小的碳足迹和环境影响清洁地操作它们也具有挑战性和成本高昂。相比之下,现代光伏&#xff0…

CSDN涨粉就这几招

目录说明涨粉不可不知的几件事几个常规的涨粉之道CSDN的数据运营之道粉丝列表关注列表关注某人取消关注获得某个用户的主要信息:昵称、排名、原创数、粉丝数等其它数据有了数据,怎么涨粉?说明 直到今年,我才开始重视涨粉&#xf…

_2LeetCode代码随想录算法训练营第二天C++

_2LeetCode代码随想录算法训练营第二天C LeetCode 题目列表: 977.有序数组的平方209.长度最小的子数组59.螺旋矩阵II 977.有序数组的平方 题目所述数组含有负数。 双指针的思路 双指针的思路: 最大元素一定是在两边,考虑用两个指针逐步…

PHY寄存器解读

以太网PHY寄存器分析 1 1、以太网PHY标准寄存器分析 2 1.1 Control Register 2 1.2 Status register 5 1.3 PHY Identifier Register 8 1.4 Auto-Negotiation Advertisement Register 8 1.5 Auto-Negotiation Link Partner Base Page Ability Register…

NY CREATE和Bleximo宣布达成新量子计算研发合作

(图片来源:网络) 12月7日,全栈量子计算系统集成公司Bleximo Corp.宣布:计划将其原型设计和营销业务扩展到纽约北部的奥尔巴尼纳米技术综合体(Albany NanoTech Complex)。该公司还将与纽约研究、经济发展、技术、工程和…

llvm编译、自带例子toy、llvm编译报错解决、.lib中搜索指定函数名

hunterzju/llvm-tutorial cs.cmu.edu/academic/class/15745-s14/public/lectures 编译llvm cd /d d:\llvm-home\ git clone gitgitcode.net:pubz/llvm-project.gitcd /d d:\llvm-home\llvm-project\ git status #HEAD detached at llvmorg-11.0.0set PATH%PATH%;D:\Python38\S…

ImmunoChemistry丨艾美捷NIR-FLIVO 690游离染料对照试验说明书

ImmunoChemistry艾美捷ICT近红外(NIR)-FLIVO示踪剂与无NIR-FLIVO染料对照分析结合使用。无NIR-FLIVO染料控制试验使用无NIR-FRIVO染料检测试剂(*Dylight690游离染料)。注射时,游离染料对照物和示踪物试剂都会产生荧光信…

Java集合 超详细版+面试题

程序总是根据运行时才知道的某些条件去创建新的对象。在此之前,无法知道所需对象的数量甚至确切类型。为了解决这个普遍的编程问题,需要在任意时刻和任意位置创建任意数量的对象。下面讲详细介绍如何使用标准库中的集合类。 集合框架图 简化图&#xff…

遗传算法求解问题(1)

问题描述 在一个长度为 n 的数组中选择 10 个元素&#xff0c;使得 10个元素的和 与 该元组中元素总和的 1/10 接近 问题约束 数组长度 n&#xff1a;10 < n < 100; 数组中没有重复的数字&#xff0c;所以选择的10个元素中也没有重复的数字 遗传算法原理 请移步我上…

国产第一颗7A的车规级马达驱动芯片TMI8140-Q1

新能源汽车因其电动化和智能化的特性&#xff0c;需要大量的马达驱动、DC/DC、高效率Buck & BuckBoost等车规级芯片&#xff0c;成为名副其实的“芯片大户”&#xff01; 以往制造一辆传统汽车一般需要用到500-600颗左右的芯片&#xff0c;而一台高性能的新能源汽车需要芯…

上传IPA包到App Store​

我们都经历过上传IPA包到App Store时的痛苦&#xff01;&#xff01;&#xff01;​ 第一步&#xff1a;通过Xcode-> Archive&#xff0c;Validate App&#xff0c;成功&#xff01;​ 第二步&#xff1a;通过Xcode-> Archive&#xff0c;Distribute App&#xff0c;成…

从股票市场选择配对的股票:共同趋势模型与套利定价理论

股价取对数之后的序列建模为随机游走。现在把取对数之后的股价当作是由一个随机游走和一个平稳时序组成&#xff1a; 是随机游走部分&#xff0c;是平稳部分。取对数后的股价求差就得到回报。所以在时间的回报表示为&#xff1a; 表示非平稳部分的回报&#xff0c;表示平稳部分…

如何基于运维事件中心通过 logstash 进行日志关键字监控

日常运维过程中&#xff0c;很多场景都需要对日志关键字进行监测&#xff0c;以便第一时间发现应用/业务相关异常&#xff0c;这是一种比较常见的监控需求&#xff0c;所以也有很多方法可以实现关键字告警。对于简单的告警可以通过一些传统的监控工具实现&#xff0c;但对于体量…

从头开始搭建一个SpringBoot项目--SpringSecurity的配置

从头开始搭建一个SpringBoot项目--SpringSecurity的配置前言本文的目标使用到的依赖、Redis配置、通用返回实体类依赖Redis项目里的配置通用返回实体ResultResultCodeResultUtil配置文件配置的目录结构Spring Security的配置信息SecurityConfigWebMVCConfig用到的类及代码自定义…

深入浅出自定义创建spring-boot-starter

深入浅出自定义创建spring-boot-starter https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.developing-auto-configuration 快速入手 第一步&#xff1a;新建模块 第二步&#xff1a;修改依赖 <?xml version"1.0" e…

关键词(三)

关键词一.最冤枉的关键字—sizeof二.“简单”的布尔类型—_Bool一.最冤枉的关键字—sizeof 前面我们说过定义变量是需要空间的&#xff08;声明不需要&#xff09;&#xff0c;同时你需要有类型像int,char…这些不同的类型会在内存中开辟不同大小的空间&#xff0c;而sizeof就可…