【Java面向对象】对象和类(上)

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.常见的类

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

在这里插入图片描述

  • 16
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值