Java基础00-面向对象基础13
1. 类和对象
1.1 什么是对象
1.2 什么是面向对象
1.3 什么是类
1.4 什么是对象的属性
1.5 什么是对象的行为
行为就是对象能够干什么
1.6 类和对象的关系
1.7 类的定义
1.7.1 类的定义步骤
代码示例:
1.8 对象的使用
代码示例:
1.8.1 案例
public class Student {
String name;
int age;
public void study(){
System.out.println("好好学习");
}
public void doHomework(){
System.out.println("多多练习");
}
} public class StudentTest {
public static void main(String[] args) {
//创建第一个对象并使用
Student s1 = new Student();
System.out.println(s1.name);//null
System.out.println(s1.age);//0 s1.name="林青霞";
s1.age=10;
System.out.println(s1.name);//林青霞
System.out.println(s1.age);//10 s1.study();//好好学习
s1.doHomework();//多多练习
}
}
2. 对象内存图
2.1 对象内存图(单个对象)
栈内存:存放静态变量、方法、常量、局部变量
堆内存:存放new出来的对象、数组、成员变量
这是一个测试类
先从main方法开始,main方法被加载到栈内存
创建对象,它会被加载到栈内存中
new Student(),在堆内存中new一片空间放入成员遍历,并赋值默认值。
方法没有调用,所以不会加载。
s指向堆内存中new出来的地址,这样就可以使用堆内存中的数据了。
输出s,因为s指向001,所以输出001.
s指向001,name指向001中的name,所以输出null
s指向001,age指向001中的age,所以输出0
最后拼接输出,null,0
s.name = “张曼玉”; 通过s(001)找到name,给他赋值"张曼玉"
和上面一样age的值修改为28
再次输出的时候就成了,张曼玉,28
s.study(); 首先找都Studen对象中的study方法,将它加载到栈内存中,而s(001)就是它的调用者。
接下来进入study方法中,输出"好好学习"
当这个方法执行完毕就会从栈内存中消失。
接下来的doHoework();方法和study()方法一样。
2.2 对象内存图(多个对象)
因为new 是在堆内存中开辟一块空间,所以,s1和s2是不一样的,互不影响。
2.3 对象内存图(多个对象指向相同)
把s1(001)赋值给s2,这样s1和s2就都指向了堆内存中的001
把第一个对象的地址赋值给第二个对象
因为s2指向的堆内存地址也是001,所以把name修改为"张曼玉"
同上age的值变为28
因为s1和s2的堆内存地址值是一样的,所以他们俩输出的结果是一样的。
s1输出的是张曼玉,28
s2输出的也是张曼玉,28
3. 成员变量和局部变量
3.1 什么是成员变量和局部变量
3.2 成员变量和局部变量的区别
4. 封装
4.1 private关键字
4.2 private关键字的使用
4.3 this关键字
this修饰的变量是成员变量;this代表所在类的对象引用,方法被哪个对象调用,this就代表哪个对象
4.4 this内存原理
s1调取setName方法,setName()进入栈内存
形参name是传递过去的"林青霞"
调用者是s1(001)
setName()方法中的this就是s1(001)
this就是调用者s1(001),name是001地址中的name,name是参数"林青霞"赋给001中的name
s2在堆内存空间中再开辟一块空间,和s1互不干扰。
总结:调用者是谁this就代表了谁
4.5 封装
5. 构造方法
5.1 构造方法概述
5.2 构造方法的注意事项
5.3 标准类制作
Java基础00-面向对象基础13的更多相关文章
- [Java 教程 00] 计算机基础
前言 我想,来到这的朋友肯定是想学习JAVA或者想要进入IT这个行业的.考虑到大家的基础可能不一样,有些人可能还是用着新买的电脑,为了让大家在后续的学习中更加顺畅.在学习一门全新的计算机语言之前,我需 ...
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...
- Java学习 · 初识 面向对象基础一
面向对象基础 1.1面向过程与面向对象的区别 面向过程和面向对象二者都是思考问题的方式,再简单的事物时,可以线性思考时使用面向过程,但当事物较为复杂时,只能使用面向对象设计.但二者并不是对立的,在解决 ...
- MYSQL、PHP基础、面向对象基础简单复习总结
一.MYSQL 1.配置MySql 第一步安装服务器(apache). 第二部安装MySql界面程序 2 ...
- 周末班:Python基础之面向对象基础
面向对象基础 面向对象和面向过程 编程思想是什么,就是用代码解决现实生活中问题的思路. 面向过程 核心点在过程二字,过程指的是解决问题的步骤,说白了就是先做什么再干什么.这种解决问题的思路就好比是工厂 ...
- [java学习笔记]java语言核心----面向对象基础
1.面向对象概述 面向对象是java语言的核心.是对应于面向过程而言的. 面向过程:强调的是过程,即动作.在java中动作就是函数.C语言就是面向过程的. 如:把大象装进冰箱需要几步? 答:需要三步: ...
- Java学习 · 初识 面向对象基础二
Package 为什么需要使用package a) 解决类重名的问题 b) 便于管理类 怎么使用package a) 类的第一句非注释性语句 b) 命名:域名倒着写,再加上模块名 注意 ...
- python3 速查参考- python基础 8 -> 面向对象基础:类的创建与基础使用,类属性,property、类方法、静态方法、常用知识点概念(封装、继承等等见下一章)
基础概念 1.速查笔记: #-- 最普通的类 class C1(C2, C3): spam = 42 # 数据属性 def __init__(self, name): # 函数属性:构造函数 self ...
- 学习PYTHON之路, DAY 7 - PYTHON 基础 7 (面向对象基础)
面向对象三大特性 一.封装 封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容. 所以,在使用面向对象的封装特性时,需要: 将内容封装到某处 从某处调用被封装的内容 第一步:将内容 ...
- Python类基础知识(面向对象基础)
#首先 我们需要了解 面向过程是什么 面向对象是什么 我们为什么需要使用面向对象 面向过程:根据业务逻辑从上到下写垒代码 面向对象:根据代码对函数进行分类和封装 区别:解决问题的逻辑不同,但是都能解决 ...
随机推荐
- airflow2.0.2分布式安装文档
需要安装的组件 组件 功能 Airflow Webserver 查询元数据以监控和执行DAGs的web界面. Airflow Scheduler 它检查元数据数据库中的DAG和任务的状态,在必要时创建 ...
- Paddle预训练模型应用工具PaddleHub
Paddle预训练模型应用工具PaddleHub 本文主要介绍如何使用飞桨预训练模型管理工具PaddleHub,快速体验模型以及实现迁移学习.建议使用GPU环境运行相关程序,可以在启动环境时,如下图所 ...
- 操作系统-Linux命令
一.目录结构 #因为根目录与开机有关,开机过程中仅有根目录会被挂载, 因此根目录下与开机过程有关的目录(以下5个),不能与根目录放到不同的分区去. /etc:配置文件 /dev:所需要的装置文件 /l ...
- 认识5G
认识5G 一 移动通信发展历程 1移动通信技术具有代际演进规律 "G"代表一切 每10年一个周期 二 5G技术指标 流量密度:单位面积内的总流量数,是衡量移动网络在一定区域范围 ...
- Java中,一个存在十几年的bug...
今天,分享一个JDK中令人惊讶的BUG,这个BUG的神奇之处在于,复现它的用例太简单了,人肉眼就能回答的问题,JDK中却存在了十几年.经过测试,我们发现从JDK8到14都存在这个问题. 大家可以在自己 ...
- csp-s模拟测试56(10.2)Merchant「二分」·Equation「树状数组」
又死了......T1 Merchant 因为每个集合都可以写成一次函数的形式,所以假设是单调升的函数,那么随着t越大就越佳 而单调减的函数,随着t的增大结果越小,所以不是单调的??? 但是我们的单调 ...
- 微信小程序使用async await的一些技巧
在小程序onLoad事件中使用getItems(this) 和this.getItems() getItems(this)对应的方法为 this.getItems()对应的方法为 在getItems( ...
- 17、ansible配置管理
17.1.前言: 1.说明: ansible是自动化运维工具,基于Python开发,实现了批量系统配置.批量程序部署.批量运行命令等功能. ansible是基于模块工作的,本身没有批量部署的能力,真正 ...
- Linux云计算-03_必备基础命令
Linux系统启动默认为字符界面,一般不会启动图形界面,所以对命令行的熟练程度能更加方便.高效的管理Linux系统. 本章介绍Linux系统必备命令各项参数及功能场景,Linux常见命令包括:cd.l ...
- oracle :如何测试数据库安装是否成功
要测试数据安装是否成功,可按顺序执行以下两个步骤: 测试步骤 1: 请执行操作系统级的命令: tnsping orcl (如果出现[TNS-03505:无法解析名称]的提示错误: 那就改为tnspi ...