java基础回顾-day13

概述

面向对象介绍

  • 并不是一种技术,而是一种编程指导思想
  • 以什么形式组织代码;以什么思路解决问题

为什么要用面向对象编程

  • 因为生活中,我们解决问题时,就是采用这种指导思想去解决的。所以,我们写程序去解决问题时,如果也能采用这种思想就会使编程变得非常简单,程序也便于人理解。

学习重点

  • 学习如何自己设计对象并使用
  • 学习获取已有对象使用

类和对象

什么是类

  • 类是对现实生活中一类具有共同属性和行为的事物的抽象
  • 我们可以将其理解为对象的设计图

什么是对象

  • 是能够看的到摸的着的真实存在的实体
  • 小结:类是对象的抽象,对象是类的实体

对象的属性和行为

  • 属性:对象具有的各种特征,每个对象的每个每个属性都拥有特定的值
  • 行为:对象能够执行的操作

类的定义

  • 类是什么:是对现实生活中一类具有共同属性和行为的事物的抽象,确定对象将会拥有的属性和行为。
    类的组成:属性和行为
  • 属性:在类中通过成员变量来体现(类中方法外的变量)
  • 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)

类的定义步骤

①定义类
②编写类的成员变量
③编写类的成员方法

public class 类名{
//成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;

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

}
例如:

  • 类(Phoe):
  • 成员变量:品牌(brand),价格(price)
  • 成员方法:打电话(call),发短信(sendMessage)
package com.itheima_01;
/*
    类的定义

    类名:手机(Phone)

    成员变量:
        品牌(brand)
        价格(price)

    成员方法:
        打电话(call)
        发短信(sendMessage)
 */
public class Phone01 {
    String brand;
    double price;
   public void call(){
       System.out.println("打电话");
   }
   public void sendMessage(){
       System.out.println("发短信");
   }
}

对象的使用

创建对象使用对象
格式:类名 对象名 = new 类名();使用成员变量:格式:对象名.变量名;
范例:Phone p = new Phone();范例:p.brand
使用成员方法:格式:对象名.方法名(参数)
范例:p.call()
package com.itheima_01;

/*
    创建对象
        格式:类名 对象名 = new 类名();
        范例:Phone p = new Phone();

    使用对象
        1:使用成员变量
            格式:对象名.变量名
            范例:p.brand
        2:使用成员方法
            格式:对象名.方法名(参数)
            范例:p.call()
 */
public class PhoneTest {
    public static void main(String[] args) {
        Phone01 ph = new Phone01();
        System.out.println(ph.brand);
        System.out.println(ph.price);
        ph.brand = "小米";
        ph.price = 4399;
        System.out.println(ph.brand);
        System.out.println(ph.price);
        ph.call();
        ph.sendMessage();
    }
}

IDEA小技巧:
分块;
在这里插入图片描述

练习

学生类的定义和使用

  • 需求:定义一个学生类,然后定义一个学生测试类,在学生测试类中完成成员变量和成员方法的使用。
    分析:
  1. 定义一个学生类:
    类名:Student
    成员变量:name,age
    成员方法:study(),doHomeWork();
  2. 定义一个学生测试类
    类名:StudentDemo
    因为要做测试,所以有一个主方法:main方法
  3. 在学生测试类中通过对象完成成员变量和成员方法的使用。
    给成员变量赋值,输出成员变量的值
    调用成员方法
package com.itheima_02;
/*
    学生类
 */
public class Student {
    //成员变量
  String name;
  int age;
    //成员方法
    public void study(){
        System.out.println("学生在学习!");
    }
    public void doHomework(){
        System.out.println("学生在做家庭作业!");
    }

}

package com.itheima_02;
/*
    学生测试类
 */
public class StudentDemo {
    public static void main(String[] args) {
        //创建对象
        Student st = new Student();

        //给成员变量赋值
        st.name="白小春";
        st.age=25;
        System.out.println(st.name+st.age);

        //调用成员方法
        st.study();
        st.doHomework();

    }
}

对象内存图

java内存分配

  • java程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分。因为每一片区域都有特定的处理数据方式和内存管理方式。
    在这里插入图片描述
    栈(虚拟机栈):所有局部变量都会在栈内存中创建
  • 局部变量:定义在方法中的变量或者方法声明上的变量
  • 方法执行都会加载到栈中进行
  • 局部变量的特点:随着方法的调用而存在,随着方法的调用完毕而消失。

堆:所有对象及其实例变量和数组都将存储在此处

  • 简答理解为:new出来的东西,都存储在堆内存。
  • 每一个new出来的东西都有一个地址值,使用完毕,会在垃圾回收器空闲时被回收
  • 实例变量(成员变量)有初始化值:
    基本数据类型:整数:0,浮点数:0.0;布尔:false,字符:空字符
    引用数据类型:null

单个对象内存图

package com.itheima_02;

/*
    单个对象
 */
public class StudentTest01 {
    public static void main(String[] args) {
        //创建对象
        Student s = new Student();
        System.out.println(s);

        //使用成员变量
        System.out.println(s.name + "," + s.age);

        s.name = "张曼玉";
        s.age = 28;

        System.out.println(s.name + "," + s.age);

        //使用成员方法
        s.study();
        s.doHomework();
    }
}

多个对象内存图

package com.itheima_02;

/*
    多个对象
 */
public class StudentTest02 {
    public static void main(String[] args) {
        //创建第一个对象并使用
        Student s1 = new Student();

        s1.name = "林青霞";
        s1.age = 30;
        System.out.println(s1.name + "," + s1.age);

        s1.study();
        s1.doHomework();

        //创建第二个对象并使用
        Student s2 = new Student();

        s2.name = "张曼玉";
        s2.age = 28;
        System.out.println(s2.name + "," + s2.age);

        s2.study();
        s2.doHomework();
    }
}

多个引用执行相同

package com.itheima_02;

/*
    多个引用指向相同
 */
public class StudentTest03 {
    public static void main(String[] args) {
        //创建第一个对象并使用
        Student s1 = new Student();

        s1.name = "林青霞";
        s1.age = 30;
        System.out.println(s1.name + "," + s1.age);

        //把第一个对象的地址赋值给第二个对象
        Student s2 = s1;

        s2.name = "张曼玉";
        s2.age = 28;
        System.out.println(s1.name + "," + s1.age);
        System.out.println(s2.name + "," + s2.age);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值