zoukankan      html  css  js  c++  java
  • 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 标准类制作

  • 相关阅读:
    移动app测试
    centos7中tomcat安装步骤
    linux下搭建数据库
    Linux 学习笔记
    vi编辑器 使用表
    python-Xml 实战
    python-Excel 实战
    手写HashMap
    volatile关键字解析
    两个栈实现队列——优化版
  • 原文地址:https://www.cnblogs.com/ajing2018/p/14642179.html
Copyright © 2011-2022 走看看