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

【Java面向对象】对象和类

文章目录

  • 1.为对象定义类
  • 2.定义类
    • 2.1 主类
  • 3.类与对象
    • 3.1 构造方法
    • 3.2 通过引用变量访问对象
    • 3.3 访问对象的数据和方法
    • 3.4 引用数据域和 null 值
    • 3.5 基本类型变量和引用类型变量的区别
  • 4.常见的类

1.为对象定义类

面向对象程序设计(OOP) 就是使用对象进行程序设计。对象 (object) 代表现实世界中可以明确标识的一个实体。

  • 一个对象的状态 (state, 也称为特征 (property) 或属性 (attribute)) 是由数据域及其当前值来表示的。
  • 一个对象的行为 (behavior, 也称为动作 ( action)) 是由方法定义的。调用对象的一个方法就是要求对象完成一个动作。

使用一个通用类来定义同一类型的对象。
类是一个模板、蓝本或者合约,用来定义对象的数据域以及方法。
对象是类的实例。可以从一个类中创建多个实例。
创建实例的过程称为实例化 对象 (object) 和实例 (instance) 经常是可以互换的。类和对象之间
的关系类似于苹果派配方和苹果派之间的关系。

Java 类使用变量定义数据域,使用方法定义动作。除此之外,类还提供了一种称为构造方法 ( constructor) 的特殊类型的方法,调用它可以创建一个新对象。构造方法本身是可以完成任何动作的,但是设计构造方法是为了完成初始化动作,例如初始化对象的数据域。

将包含 main 方法的类称为主类 (main class)。

2.定义类

public class Test{public static void main(String args){Circle c1 = new Circle();Circle c2 = new Circle(1.0);System.out.println(c2.getRadius());}
}class Circle{//属性double radius;//方法Circle(){radius = 1;}Circle(double a){radius = a;}double getRadius(){return radius;}
}

也可以把Test和Circle放一起

public class Circle{public static void main(String args){Circle c1 = new Circle();Circle c2 = new Circle(1.0);System.out.println(c2.getRadius());}//属性double radius;//方法Circle(){radius = 1;}Circle(double a){radius = a;}double getRadius(){return radius;}
}

2.1 主类

文件中只能有一个类是公共( public)类。公共类必须与文件同名。
主类包含 main 方法,运行这个程序时,Java 运行时系统会调用主类中的 main 方法。
使用类的程序通常称为该类的客户( client)。

3.类与对象

3.1 构造方法

  • 构造方法必须和所在类名字相同。
  • 构造方法没有返回值类型,甚至连 void 也没有。
  • 构造方法是在创建一个对象时由 new 操作符调用的。构造方法的作用是初始化对象.
  • 构造方法可以重载

通常,类会提供一个没有参数的构造方法 .这样的构造方法称为无参构造方 法 (no-arg 或 no-argument constructor) .
在一个类中,用户可能没有定义构造方法。在这种情况下,类中会隐式定义一个方法体为空的无参构造方法。这个构造方法称为默认构造方法 (defaultconstructor), 当且仅当类中没有明确定义任何构造方法时才会自动提供。

3.2 通过引用变量访问对象

对象是通过对象引用变量 ( reference variable) 来访问的,该变量包含了对对象的引用。
本质上来说,类是程序员定义的类型。类是一种引用类型 (referencetype), 这意味着该类类型的变量都可以引用该类的一个实例。

// 声明对象引用变量
ClassName objectRefVar;// 创建一个对象
new ClassName();// 声明对象引用变量、创建对象以及将对象的引用赋值给这个变量的语句
C1assName objectRefVar = new ClassName() ;

从表面上看,对象引用变量中似乎存放了一个对象,但事实上,它只是存放了对该对象的引用。严格地讲,对象引用变量和对象是不同的,但是大多数情况下,这种差异是可以忽略的。
另外,在 Java 中,数组被看作对象。数组是用 new 操作符创 建的。一个数组变量实际上是一个包含数组引用的 变量。

3.3 访问对象的数据和方法

在面向对象编程中,对象成员指该对象的数据域和方法。在创建一个对象之后,它的数据访问和方法调用可以使用点操作符 ( .) 来进行,该操作符也称为对象成员访问操作符( object member access operator)

objectRefVar.dataField // 引用对象的数据域
objectRefVar .method(arguments); //调用对象的方法

之前的数据域 radius 称作实例变量 ( instance variable), 因为它依赖于某个具体的实例。基于同样的原因. getArea 方法称为实例方法 (instance method), 因为只能在具体的实例上调用它。实例方法被调用的对象称为调用对象 (calling object)

3.4 引用数据域和 null 值

数据域也可能是引用型的。

class Student{String name;
}

String 是一个预定义的 Java 类。

如果一个引用类型的数据域没有引用任何对象,那么这个数据域就有一个特殊的 Java值 null。null 同 true 和 false —样都是字面值。true 和 false 是 boolean 类型字面值,而null 是引用类型字面值。

引用类型数据域的默认值是 null, 数值类型数据域的默认值是 0, boolean 类型数据域的默认值是 false, 而 char 类型数据域的默认值是 1\u0000
但是,Java 没有给方法中的局部变量赋默认值

3.5 基本类型变量和引用类型变量的区别

每个变量都代表一个保存了存储值的内存位置。声明一个变量时,就是在告诉编译器这个变量可以存放什么类型的值。

  • 对基本类型变量来说,对应内存所存储的值是基本类型值
  • 对引用类型变量来说,对应内存所存储的值是一个引用,是对象的存储地址

将一个变量赋值给另一个变量时,另一个变量就被赋予同样的值。

  • 对基本类型变量而言,就是将一个变量的实际值赋给另一个变量。
  • 对引用类型变量而言,就是将一个变量的引用赋给另一个变量。说白了就是,赋值之后就指向同一个对象了。

指向对象的变量指向新的对象后,以前引用的对象就不再有用,因此,现在它就成为垃圾 (garbage)。垃圾会占 用内存空间。Java 运行系统会检测垃圾并自动回收它所占据的空间,这个过程称为垃圾回收
(garbage collection )。
可以显式地给该对象的引用变量赋 null 值。如果该对
象没有被任何引 用 变量所引 用,Java 虚拟机将自动回收它所占据的空间。

4.常见的类

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

在这里插入图片描述

http://www.lryc.cn/news/400803.html

相关文章:

  • 在微服务架构架构中父工程中的`<dependencyManagement>`和 `<dependencies>`的区别
  • Docker安装Zookeeper、RocketMQ
  • Ubuntu 磁盘扩容
  • 如何在QGC中接收和处理无人机上传的各种传感器数据(如GPS、IMU等)。
  • Spring配置Bean自己的关系:继承和依赖
  • 科技与狠活
  • Vue:axios请求数据转存leanCloud
  • 实战篇(九):解锁3D魔方的秘密:用Processing编程实现交互式魔方
  • Android系统上常见的性能优化工具
  • TG创建小程序交互APP登录以及机器人信息
  • 探索大模型能力--prompt工程
  • 【经验分享】运用云服务器实现挂机手机网课的操作,部分手机软件适用
  • 【从0到1进阶Redis】主从复制 — 主从机宕机测试
  • Flask启动5000端口后关不掉了?
  • Redis的热key解决
  • 在linux中查找 / 目录下的以.jar结尾的文件(find / -name *.jar)
  • 【Python爬虫教程】第6篇-使用session发起请求
  • 【Hot100】LeetCode—763. 划分字母区间
  • 分布式服务基于Zookeeper的分布式锁的实现
  • Rust编程-I/O
  • FastAPI 学习之路(四十七)WebSockets(三)登录后才可以聊天
  • 数据结构—链式二叉树-C语言
  • nginx代理gitee
  • 一款IM即时通讯聊天系统源码,包含app和后台源码
  • Camunda如何通过外部任务与其他系统自动交互
  • Django ORM中ExpressionWrapper的用途
  • 什么软件修复视频画质比较好,视频画质修复工具
  • 效能工具:执行 npm start 可直接切换proxy代理UR后直接启动项目
  • MongoDB自学笔记(一)
  • 【AIGC】二、mac本地采用GPU启动keras运算