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

【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 对象内存图

见视频

http://www.xdnf.cn/news/10340.html

相关文章:

  • leetcode动态规划—买卖股票系列
  • Python案例解析 : 函数模块化编程的实践应用
  • CTFHub-RCE 命令注入-过滤目录分隔符
  • 解决8080端口被占问题
  • python学习day34
  • 学习海康VisionMaster之表面缺陷滤波
  • Cesium快速入门到精通系列教程
  • 【KWDB 创作者计划】_探秘浪潮KWDB数据库:从时间索引到前沿技术
  • 用户认证的魔法配方:从模型设计到密码安全的奇幻之旅
  • ApiHug 1.3.9 支持 Spring 3.5.0 + Plugin 0.7.4 内置小插件升级!儿童节快乐!!!
  • vue-08(使用slot进行灵活的组件渲染)
  • Java Spring 之监听器(Listener)详解与实战
  • 如何查看电脑电池性能
  • 对蚁群算法的理解和实例详解
  • [笔记]一般小信号测量方法
  • 企业微信接入说明
  • proteus美观与偏好设置
  • Qq空间照片视频批量下载工具
  • TomSolver 库 | 入门及使用
  • docker安装和镜像源替换
  • Python训练营---Day41
  • GoogLeNet网络模型
  • 【求A类B类月】2022-2-9
  • 【python】uv管理器
  • PS裁剪后像素未删除?5步解决“删除裁剪像素”失效问题
  • Role of ISMEAR in insulator-conductor transition
  • Java-Character类静态方法深度剖析
  • Day08
  • 每日算法刷题Day19 5.31:leetcode二分答案3道题,用时1h
  • 本地部署基于 Kibana 开源搜索引擎 Elasticsearch 并实现外部访问