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

1. 类和对象

1.1 什么是对象

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

1.2 什么是面向对象

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

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

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

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

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

1.3 什么是类

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

1.4 什么是对象的属性

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

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

1.5 什么是对象的行为

行为就是对象能够干什么

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

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

1.6 类和对象的关系

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

1.7 类的定义

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

1.7.1 类的定义步骤

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

代码示例:

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

1.8 对象的使用

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

代码示例:

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

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

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

 1.8.1 案例

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

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

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 对象内存图(单个对象)

这是一个测试类

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

先从main方法开始,main方法被加载到栈内存

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

创建对象,它会被加载到栈内存中

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

new Student(),在堆内存中new一片空间放入成员遍历,并赋值默认值。
方法没有调用,所以不会加载。

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

s指向堆内存中new出来的地址,这样就可以使用堆内存中的数据了。

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

输出s,因为s指向001,所以输出001.

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

s指向001,name指向001中的name,所以输出null

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

s指向001,age指向001中的age,所以输出0

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

最后拼接输出,null,0

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

s.name = “张曼玉”; 通过s(001)找到name,给他赋值"张曼玉"

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

和上面一样age的值修改为28

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

再次输出的时候就成了,张曼玉,28

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

s.study(); 首先找都Studen对象中的study方法,将它加载到栈内存中,而s(001)就是它的调用者。

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

接下来进入study方法中,输出"好好学习"

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

当这个方法执行完毕就会从栈内存中消失。

接下来的doHoework();方法和study()方法一样。

2.2 对象内存图(多个对象)

因为new 是在堆内存中开辟一块空间,所以,s1和s2是不一样的,互不影响。

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

2.3 对象内存图(多个对象指向相同)

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

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

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

把s1(001)赋值给s2,这样s1和s2就都指向了堆内存中的001

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

因为s2指向的堆内存地址也是001,所以把name修改为"张曼玉"

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

同上age的值变为28

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

因为s1和s2的堆内存地址值是一样的,所以他们俩输出的结果是一样的。

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

s1输出的是张曼玉,28

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

s2输出的也是张曼玉,28

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

3. 成员变量和局部变量

3.1 什么是成员变量和局部变量

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

3.2 成员变量和局部变量的区别

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

4. 封装

4.1 private关键字

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

4.2 private关键字的使用

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

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

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

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

4.3 this关键字

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

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

4.4 this内存原理

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

s1调取setName方法,setName()进入栈内存

形参name是传递过去的"林青霞"

调用者是s1(001)

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

setName()方法中的this就是s1(001)

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

this就是调用者s1(001),name是001地址中的name,name是参数"林青霞"赋给001中的name

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

s2在堆内存空间中再开辟一块空间,和s1互不干扰。

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

总结:调用者是谁this就代表了谁

4.5 封装

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

5. 构造方法

5.1 构造方法概述

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

5.1 构造方法的注意事项

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

5.3 标准类制作

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

 

上一篇:【MATLAB】MATLAB 2017A 软件安装


下一篇:001 课程定位和目标