Java学习笔记Day4

面向对象

面向对象介绍

  • 面向:拿、找
  • 对象:能干活的东西
  • 面向对象编程:拿东西过来做对应的事情

类和对象

  • 类(设计图):是对象共同特征的描述
  • 对象:是真实存在的具体东西

如何定义类

/* 格式
public class 类名 {
    1.成员变量 (代表属性,一般是名词)
    2.成员方法 (代表行为,一般是动词)
    3.构造器
    4.代码块
    5.内部类    
} */

public class Phone {
    // 属性 (成员变量)
    String brand;
    double price;
    
    // 行为 (成员方法)
    public void call(){}
    public void playGame(){}
}

如何得到类的对象

 // 格式 :类名 对象名 = new 类名()
Phone p = new Phone();

如何使用对象

  • 访问属性:对象名.成员变量
  • 访问行为:对象名.方法名(…)

定义类的补充注意事项

  • 用来描述一类事物的类,专业上叫:Javabean类,在Javabean类中,是不写main方法的
  • 编写main方法的类,叫做测试类,我们可以在测试类中创建Javabean类的对象并进行赋值调用
  • 类名首字母建议大写,需要见名知意,驼峰模式
  • 一个Java文件中可以定义多个Class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。
    实际开发中建议还是一个文件定义一个class类
  • 成员变量的完整定义格式是:**修饰符 数据类型 变量名称 = 初始化值;**一般无需指定初始化值,存在默认值

对象的成员变量的默认值规则

数据类型默认值
byte、short、int、long0
float、double0.0
booleanfalse
类、接口、数组、Stringnull

封装

作用:告诉我们如何正确设计对象的属性和方法,对象代表什么,就得封装对应的数据,并提供数据对应的行为

private关键字

  • 是一个权限修饰符
  • 可以修饰成员(成员变量和成员方法)
  • private修饰的成员只能在本类中才能访问

针对于每一个私有化的成员变量,都要提供get和set方法

  • set方法:给成员变量赋值
  • get方法:对外提供成员变量的值

this

  • 作用:可以区别成员变量和局部变量

  • System.out.println(age); // 会先找局部变量,如果有就使用局部变量,如果没有就去成员变量
    System.out.println(this.age); // 直接去成员变量找    
    

构造方法

构造方法也叫作构造器、构造函数

作用:在创建对象的时候给成员变量进行赋值的(初始化的 )。

格式:

public class Student{
	修饰符 类名(参数){
        方法体;
    }
}

特点:

  1. 方法名与类名相同,大小写也要一致
  2. 没有返回值类型,连void都没有
  3. 没有具体的返回值(不能由return带回结果数据)
  4. 如果我们自己没有写任何的构造方法,虚拟机会给我们自动加一个空参构造方法

执行时机:

  1. 创建对象的时候由虚拟机调用,不能手动调用构造方法
  2. 每创建一次对象,就会调用一次构造方法

注意事项

  1. 构造方法的定义
    • 如果没有定义构造方法,系统将会给出一个默认无参构造方法
    • 如果定义了构造方法,系统将不再提供默认的构造方法
  2. 构造方法的重载
    • 带参构造方法,和无参构造方法,两者方法名相同,但是参数不同,这叫构造方法的重载
  3. 推荐的使用方式
    • 无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法

标准的JavaBean类

  1. 类名需要见名思意
  2. 成员变量使用private修饰
  3. 提供至少两个构造方法
    • 无参构造方法
    • 带全部参数的构造方法
  4. 成员方法
    • 提供每一个成员变量对应的get/set方法
    • 如果还有其他行为,也需要写上

对象内存图

一个对象的内存图

Student s = new Student();
  1. 加载class文件
  2. 声明局部变量
  3. 在堆内存中开辟一个空间
  4. 默认初始化
  5. 显示初始化
  6. 构造方法初始化
  7. 将堆内存中的地址值赋值给左边的局部变量

基本数据类型:数据是存储在自己的空间中,特点:赋值给其他变量,也是赋的真实的值。

引用数据类型:数据值是存储在其他空间中,自己空间中存储的是地址值。特点:赋值给其他变量,赋的地址值

this:代表方法调用者的地址值

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

区别成员变量局部变量
类中位置不同类中,方法外方法内,方法申明上
初始化值不同有默认初始化值没有,使用之前需要完成赋值
内存位置不同堆内存栈内存
声明周期不同随着对象的创建而存在,随着对象消失而消失随着方法的调用而存在,随着方法的运行结束而消失
作用域整个类中有效当前方法中有效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值