码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础00-面向对象基础13

时间:2021-04-12 12:11:48      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:idt   技术   默认   步骤   赋值   vat   没有   相同   栈内存   

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

标签:idt   技术   默认   步骤   赋值   vat   没有   相同   栈内存   

原文地址:https://www.cnblogs.com/ajing2018/p/14642179.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!