Java面向对象oopDay1

本文介绍了面向对象编程的基本概念,包括类与对象的定义、使用及内存管理。讲解了对象在堆、栈和方法区的存储,以及引用类型的使用,如作为成员变量、方法参数和返回值。同时,阐述了构造方法的作用和使用,强调了对象初始化的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向对象、类 和 对象、对象的内存管理、引用类型的使用、构造方法


一、面向对象
1.编程思想:
例子:将大象放进冰箱需要几步?
面向过程:
  打开冰箱(){
   
  }
  存储大象(){

  }
  关闭冰箱(){

  }

   
面向对象:
类:
 冰箱
   打开(){
      打开冰箱
   }
   关闭(){
      关闭冰箱
   }
 大象
   存储(){
      存储大象
   }

二、类 和 对象
1.概念
  类(class):类是对现实生活中一类具有共同属性和行为的抽象.

  对象:是能够看到到摸得着并且真实存在的实体,也称之为实例对象.

2.类的定义
  1)类中拥有成员变量(属性)和成员方法(行为)
public class Class {
    int a;
    String b;
    public void c(){}
}
3.对象的调用
  1)通过类创建对象
   类名 对象名  = new 类名();
  2)调用对象的成员变量和成员方法
   对象名.变量名
   对象名.方法名()
public class ClassTest {
    public static void main(String[] args) {
        Class classTest = new Class();
        classTest.a=1;
        classTest.b="String类型";
        classTest.c();
    }  
  3)注意:
   必须先创建类(class),然后再创建类的对象

三、对象的内存管理
  堆:数组真实的数据 / 对象
  栈:局部变量 / 临时变量
  方法区:类相关的信息

一个对象的内存图

两个引用使用同一个对象的内存图

两个引用指向同一个对象的内存图

对象类型作为方法返回值时的内存图


四、引用类型的使用(数组/ 类 / 接口)
数据类型:基本数据类型 + 引用数据类型(数组/ 类 / 接口)

1.引用类型作为成员变量使用
  a.可选择性进行初始化,有默认初始化值,引用类型默认初始值都是null
  b.引用类型:数组 / 类 / 接口

2.引用类型作为方法参数和返回值使用
  a.参数在传递时,传递的是地址值,内容会改变
  b.返回值是引用数据类型,则需要在方法内进行初始化操作,否则在外部调用时会出现空指针异常.

3.主方法中直接创建,属于局部变量
    Car car = new Car()
  主方法中通过对象名调用,属于成员变量
    stu.car = new Car();

4.局部变量和成员变量的区别
  a.位置区别
    局部变量: 方法中 或者 形参上
    成员变量: 类中,方法外

  b.初始化区别
    局部变量: 使用前,必须进行初始化操作
    成员变量: 使用前,可以不进行初始化操作,因为有默认初始值

  c.使用范围区别
    局部变量: 只能作用在当前方法中
    成员变量: 类中

  d.JVM内存中的区别
    局部变量:栈中
    成员变量:堆中

  e.生命周期的区别
    局部变量: 随着方法的调用而存在,随着方法的使用完成而消失
    成员变量:随着对象的创建而存在,随着对象的消失而消失
五、构造方法
1.语法格式:
  a.方法名和类名一致
  b.构造方法没有返回值类型,连void都没有
  c.无参构造方法是计算机默认添加的

2.作用: 用于初始化成员变量

3.执行时机:创建对象是调用,每创建一个对象,都会执行一次构造方法.

4.this关键词: 表示当前对象
  this在构造方法中使用:this( ) 不能在普通方法中使用,只能写在构造方法中。
                    在构造方法中使用时,必须是第一条语句。
public class Student {
    String name;

    // 无参构造方法(没有参数的构造方法)
    public Student() {
        this("张三");
    }

    // 有参构造方法
    public Student(String name) {
        this.name = name;
    }

    // 输出name和age
    public void print() {
        System.out.println("姓名:" + name);
    }

    public static void main(String[] args) {
        Student stu = new Student();
        stu.print();
    }
}
  this在成员方法中使用:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值