Java面向对象
Java面向对象
设计对象并使用
在Java中,必须先设计类,才能获得对象。
类(设计图):是对象共同特征的描述; 对象:是真实存在的具体实例。
如何定义类
public class 类名 { 1、成员变量(代表属性,一般是名词) 2、成员方法(代表行为,一般是动词) 3、构造器 (后面学习) 4、代码块 (后面学习) 5、内部类 (后面学习) }
如何得到类的对象
类名 对象名 = new 类名(); Car c = new Car();
如何使用对象
- 访问属性: 对象名.成员变量
- 访问行为: 对象名.方法名(…)
定义类的补充注意事项
- 成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值; 一般无需指定初始化值,存在默认值。
- 类名首字母建议大写,且有意义,满足“驼峰模式”。
- 一个Java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。实际开发中建议还是一个文件定义一个class类。
对象的成员变量的默认值规则
数据类型 明细 默认值 byte、short、char、int、long 0 基本类型 float、double 0.0 boolean false 引用类型 类、接口、数组、String null
对象内存图
垃圾回收
- 注意:当堆内存中的类对象或数组对象,没有被任何变量引用(指向)时,就会被判定为内存中的“垃圾”。
- Java存在自动垃圾回收器,会定期进行清理。
构造器
构造器的作用
用于初始化一个类的对象,并返回对象的地址。
构造器的定义格式
public class Car { ... // 无参数构造器 public Car(){ ... } // 有参数构造器 public Car(String n, String b){ ... } }
构造器的分类
- 无参数构造器(默认存在的):初始化的对象时,成员变量的数据均采用默认值。
- 有参数构造器:在初始化对象的时候,同时可以为对象进行赋值。
注意事项
- 任何类定义出来,默认就自带了无参数构造器,写不写都有。
- 一旦定义了有参数构造器,无参数构造器就没有了,此时就需要自己写一个无参数构造器了。
this关键字
this关键字
作用:出现在成员方法、构造器中代表当前对象的地址,用于访问当前对象的成员变量、成员方法。
this出现在有参数构造器中的用法
public class Car { String name; double price; public Car(String n , double b){ name = n; price = b; } } public class Car { String name; double price; public Car(String name , double price){ this.name = name; this.price = price; } }
this出现在成员方法中的用法
public class Car { String name; double price; public void goWith(String name){ System.*out*.println(name + "正在和" + name + "一起比赛!!"); } } public class Car { String name; double price; public void goWith(String name){ System.out.println(this.name + "正在和" + name + "一起比赛!!"); } }
封装
封装的实现步骤
- 一般对成员变量使用private(私有)关键字修饰进行隐藏,private修饰后该成员变量就只能在当前类中访问。
- 提供public修饰的公开的getter、setter方法暴露其取值和赋值。
封装的好处小结
- 加强了程序代码的安全性。
- 适当的封装可以提升开发效率,同时可以让程序更容易理解与维护。
标准JavaBean
JavaBean
- 也可以理解成实体类,其对象可以用于在程序中封装数据。
标准JavaBean须满足如下要求:
- 成员变量使用 private 修饰。
- 提供每一个成员变量对应的 setXxx() / getXxx()。
- 必须提供一个无参构造器。
成员变量和局部变量的区别
区别 成员变量 局部变量 类中位置不同 类中,方法外 常见于方法中 初始化值不同 有默认初始化值 没有,使用之前需要完成赋值 内存位置不同 堆内存 栈内存 生命周期不同 随着对象的创建而存在,随着对象的消失而消失 随着方法的调用而存在,随着方法的运行结束而消失 作用域 在所归属的大括号中
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步