当前位置: 首页 > news >正文

【Java基础05】面向对象01

文章目录

  • 1. 设计对象并使用
    • 1.1 类与对象
    • 1.2 封装
      • 1.2.1 private关键字
      • 1.2.2 this关键字
        • 成员变量和局部变量的区别
      • 1.2.3 构造方法
      • 1.2.4 标准JavaBean类
    • 1.3 对象内存图

本文部分参考这篇博客

1. 设计对象并使用

1.1 类与对象

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

public class 类名{1、成员变量(代表属性,一般是名词)2、成员方法(代表行为,一般是动词)3、构造器:	(后面学习) 4、代码块	(后面学习)5、内部类	(后面学习)
}
public class Phone {//属性String brand;double price;//行为public void call(){System.out.println("手机打电话");}public void playGame(){System.out.println("玩游戏");}
}
  • 创建对象的格式:
    • 类名 对象名 = new 类名();
  • 调用成员的格式:
    • 对象名.成员变量
    • 对象名.成员方法();
public class Main {public static void main(String[] args) {Phone P = new Phone();   P.brand = "iphone";P.price = 9999.99;System.out.println(P.brand);System.out.println(P.price);P.call();P.playGame();}
}

注意事项:
Javabean类(就是描述事物的类),不需要写main方法。
编写main方法的类,叫测试类
一个文件其实可以有多个类,不过只能有一个public类,文件名要和public类一致,不过实际开发中还是一个文件定义一个class类比较好。

定义成员变量可以初始化,也可以不初始化,有默认值:
基本类型:0/0.0/flase
引用类型(类、数组、接口、String):null

1.2 封装

面向对象三大特征:封装、继承、多态
对象代表什么,就得封装对应的数据,并提供数据对应的行为

注意:谁的行为就设计谁的方法与属性在这里插入图片描述

封装的目的是将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。比如成员变量private,提供对应的getXxx()/setXxx()方法。

封装的好处:

  • 对象代表什么,就得封装对应的数据,并提供数据对应的行为
  • 降低我们的学习成本,可以少学、少记,或者说压根不用学,不用记对象有哪些方法,有需要时去找就行

1.2.1 private关键字

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

针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作:

  • 提供“setXxx(参数)”方法,用于给成员变量赋值,方法用public修饰。
  • 提供“getXxx()"方法,用于获取成员变量的值,方法用public修饰

在这里插入图片描述

1.2.2 this关键字

(1)this修饰的变量用于指代成员变量,其主要作用是区分局部变量和成员变量的重名问题。

方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量(而且会就近原则,形参离它更近,会调用形参而不是成员变量)。
方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量。

(2)this代表所在类的对象。方法被哪个对象调用,this就代表哪个对象
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

1.2.3 构造方法

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

  • 作用:创建对象的时候给成员变量进行初始化。
  • 在这里插入图片描述
public class 类名{修饰符 类名(参数){}
}class Student {private String name;private int age;//构造方法public Student() {System.out.println("无参构造方法");}public void show() {System.out.println(name + "," + age);}
}
/*测试类*/
public class StudentDemo {public static void main(String[] args) {//创建对象Student s = new Student();s.show();}
}

在这里插入图片描述

注意事项:

  • 构造方法的创建
    如果没有定义构造方法,系统将给出一个默认的无参数构造方法
    如果定义了构造方法,系统将不再提供默认的构造方法

  • 构造方法的重载
    如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法

  • 推荐的使用方式
    无论是否使用,都手工书写无参数构造方法

1.2.4 标准JavaBean类

① 类名需要见名知意

② 成员变量:private修饰

③构造方法:提供至少两个

  • 无参构造方法
  • 带全部参数的构造方法

④ 成员方法:

  • 提供每一个成员变量对应的setXxx()/getXxx()
  • 提供一个显示对象信息的show()

⑤ 如果还有其他行为,也需要写上

  • 示例代码:
class Student {//成员变量private String name;private int age;//构造方法public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}//成员方法public void setName(String name) {this.name = name;}public String getName() {return name;}public void setAge(int age) {this.age = age;}public int getAge() {return age;}public void show() {System.out.println(name + "," + age);}
}
/*创建对象并为其成员变量赋值的两种方式1:无参构造方法创建对象后使用setXxx()赋值2:使用带参构造方法直接创建带有属性值的对象
*/
public class StudentDemo {public static void main(String[] args) {//无参构造方法创建对象后使用setXxx()赋值Student s1 = new Student();s1.setName("林青霞");s1.setAge(30);s1.show();//使用带参构造方法直接创建带有属性值的对象Student s2 = new Student("林青霞",30);s2.show();}
}

1.3 对象内存图

见视频

相关文章:

  • python中常用的内置属性built-in attributes
  • 《高等数学》(同济大学·第7版) 的 详细章节目录
  • 10.安卓逆向2-frida hook技术-frida基本使用-frida指令(用于hook)
  • DeepSeek API流式输出与多轮对话示例
  • DFS入门刷题
  • OD 算法题 B卷【模拟消息队列】
  • Arm处理器调试采用jlink硬件调试器的命令使用大全
  • 人工智能在智能供应链中的创新应用与未来趋势
  • 2024年ESWA SCI1区TOP,自适应学习灰狼算法ALGWO+无线传感器网络覆盖优化,深度解析+性能实测
  • 开源版 PyMOL 如何绘制 Galidesivir 分子结构 ?
  • 项目:贪吃蛇实现
  • 流媒体协议分析:流媒体传输的基石
  • Jinja2 模板继承机制
  • Mybatis ORM SpringORM
  • 【代码坏味道】膨胀类 Bloaters
  • Go语言的context
  • 《高等数学》(同济大学·第7版) 第一节《映射与函数》超详细解析
  • 【算法】递归与分治策略
  • Cesium快速入门到精通系列教程一
  • 【Linux】进程地址空间揭秘(初步认识)
  • python开发动态网站开发/百度地图排名可以优化吗
  • 宁波外贸公司排名前十/seo顾问服务咨询
  • 西安微信网站建设/想要导航推广网页怎么做
  • 网站链接地图是怎么做的/快速网站seo效果
  • 工作纪律生活纪律研讨发言/seo上海优化
  • 外贸平台有哪些国际/怎么优化百度关键词