JAVA面向对象之对象和类

简介:

Java是一种面向对象的编程语言,面向对象在整个Java的学习中属于重中之重,从这一篇博客开始,将逐步为大家介绍Java面向对象的相关知识,这一偏将为大家介绍对象和类的概念以及如何定义类和创建对象。

一、对象和类的概念

1、对象

以一个人为例,对于人,我们可以从他所具有的特征和所具有的行为来进行分析。

特征:体重、身高、性别、年龄......

行为:吃饭、睡觉、说话......

上面的例子就是对现实世界中的具体事物进行的描述,这些具体的事务就是对像,比如一个人、一辆车。从以上的分析还可以看出,人类在对事物进行描述的时候大多从两个方面,即从静(特性、特征)和动(用途、行为)来展开。所以我们可以总结为:对象指具体的事物,具有静态的特征和动态的行为或用途。

在Java语言中,在对对象进行描述时,其静态的特征称为属性,动态的行为或用途称为方法。

2、类

上面提到对象是具体的事物,那么,类就是对具体事物的一般特征进行描述。换句话说,类是具有相同属性和行为的一组对象的集合,类也有属性和行为。

对象是具体的一个实实在在的事物,类是从这些具体事物(对象)的原型。是这些事物一般特征的描述,是抽象出来的。

二、定义类和创建对象

1、类的声明

Java中类声明的格式如下:

[类修饰符] class 类名 [extends 父类名称] [implements 接口名称列表] 

{

   变量定义及初始化;

   方法定义及方法体;

}

类修饰符:[public|abstract|final] 缺省方式为frindly

public:类的访问控制符。Java类具有两种访问访问修饰符:public和default。public允许类具有完全开放的可见性,所有其他类都可以访问它,省略public,则为default,即只有位于同一个包(本质上就是文件夹)中的类可以访问该类。

abstract指明该类为一个抽象类,说明该类是一个定义不完全的类,需要被继承,才能实例化创建对象。

final:表明该类为最终类,不能被继承。

extends:表示继承,如果没有指定继承关系,则自动从Object类派生该类。

implements:表示实现接口。

2、类的成员

类的成员包括属性(变量)和方法两个部分,定义格式如下:

成员变量:

[变量修饰符] 变量数据类型 变量名;

变量修饰符可以为public、protected、private、static、final、transient、volatile。

成员变量可以是Java的任意一种数据类型

成员方法:

[方法修饰符] 返回类型 方法名称(参数列表) [throws exception]

{

   ......

}

方法修饰符可以是public、protected、private、static、final、abstract、native、synchronized。

返回类型可以是Java任意数据类型,当一个方法不需要返回值时,返回类型为void。

参数的类型可以是Java任意数据类型,根据数据类型的不同采用值传递或引用传递。

3、创建对象

想要创建对象,我们首先要抽象出类,比如我们要创建一个箱子对象,我们应该首先抽象出箱子类,箱子具有长度、宽度、高度等属性,并且可以计算体积,所以我们可以这样定义这个类:

public class Box 
{
   private double length;
   private double width;
   private double height;
   
   public void setLength(double length)
   {
      this.length = length;
   }
   
   public void setWidth(double width)
   {
      this.width = width;
   }
   
   public void setHeight(double height)
   {
      this.height = height;
   }
   
   public double getLength()
   {
	   return length;
   }
   
   public double getWidth()
   {
	   return width;
   }
   
   public double getHeight()
   {
	   return height;
   }
   
   public double getV()
   {
      return length * width * height;
   }
}
在这个类中,类名为Box,我们定义了三个属性,分别为长、宽、高,且属性的访问修饰为private,我们需要通过getter/setter方法对其进行读取/赋值,另外还有一个计算体积的方法。

要想创建新的对象,我们需要使用new关键字和想要创建对象的类名,如:

Box box = new Box();

等号左边以类名Box作为变量类型定义了一个变量box,来指向等号右边通过new关键字创建的一个Box类的实例对象,变量box就是对象的引用。注意:在new语句的类名后一定要加上(),Box()被称为构造方法,后面会进行讲解。

如果要访问对象中的属性或方法,可以使用.操作符,如:box.getV();

目录
相关文章
|
1天前
|
安全 Java 编译器
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
Java对象一定分配在堆上吗?
|
5天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
31 17
|
3天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
3天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
4天前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
1天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
7 2
|
7天前
|
Java
Java的原子变量类
Java的原子变量类
17 8
|
3天前
|
存储 Java 编译器
java wrapper是什么类
【10月更文挑战第16天】
11 3
|
6天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
17 5
|
6天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
11 3