从零开始学Java之六——类与对象

前言:

在面向对象中,类和对象是最基本、最重要的组成单元

一、类与对象的区别

类实际上是表示一个客观世界某类群体的一些基本特征抽象。对象就是表示一个个具体的东西。所以说类是对象的抽象,对象是类的具体
换个说法,类是对象的蓝图

二、类的定义

在 Java 中定义一个类,需要使用 class 关键字、一个自定义的类名和一对表示程序体的大括号。例:

public abstract/final class Dog{
	String name;
	int age;
	void bark(){
		
	}
}

例子中 / 表示或,意思是可以使用abstract或者final两个关键字修饰类,但是两者不可以同时出现。
对上述关键字进行描述:

1.public: 表示“共有”的意思。如果使用 public 修饰,则可以被其他类和程序访问。每个 Java 程序的主类都必须是 public 类,作为公共工具供其他类和程序使用的类应定义为 public 类。
2.abstract: 如果类被 abstract 修饰,则该类为抽象类,抽象类不能被实例化,但抽象类中可以有抽象方法(使用 abstract 修饰的方法)和具体方法(没有使用 abstract 修饰的方法)。继承该抽象类的所有子类都必须实现该抽象类中的所有抽象方法(除非子类也是抽象类)。
3.final: 如果类被 final 修饰,则不允许被继承。
4.class: 声明类的关键字。
5.Dog: 类的名称
6.String、int: 表示成员变量的类型
7.name、age: 表示成员变量的名称
8.bark: 成员方法名称

类的命名规则:

1.类的名字以下划线、或者字母开头,最好以字母开头。
2.第一个字母最好大写,若类名是由多个单词组成,则每个单词的首字母都最好大写
3.类名不能为Java中的关键字,如int,String等。

定义类:

1.声明一个类。编写类的最外层框架,声明一个名称为Dog的类

public class Dog{
	//类的主体	
}

2.编写类的属性:
通过在类中定义变量来描述类所具有的行为,这里的变量称为成员变量

public class Dog{
	String name;
	int age;	
}

3.编写类的方法
类的方法描述了类所具有的行为。

public class Dog{
	String name;
	int age;	
	void bark(){
		System.out.println("汪汪汪");
	}
}

其中成员变量和方法均可用以下关键字修饰:
public、protected、private: 用于表示成员变量的访问权限。
static: 表示该成员变量为类变量,也称为静态变量。
final: 表示将该成员变量声明为常量,其值无法更改。

可以在声明成员变量的同时对其进行初始化,如果声明成员变量时没有对其初始化,则系统会使用默认值初始化成员变量

初始化的默认数值如下:

类型默认初始化值
整数型(byte,short,int,long)0
单精度浮点型(float)0.0f
双精度浮点型(double)0.0d
字符型(char)“\u0000”
布尔型false

数组引用类型的变量的默认值为 null。如果创建了数组变量的实例,但没有显式地为每个元素赋值,则数组中的元素初始化值采用数组数据类型对应的默认值。

三、对象的创建

对象是对类的实例化。对象具有状态和行为,变量用来表明对象的状态,方法表明对象所具有的行为。

Java对象的创建方法分为显示创建和隐式创建:

显示创建:
1.使用 new 关键字创建,这是最常见的创建对象的方法,语法如下:

类名 对象名 = new 类名();

2.调用 java.lang.Class 或java.lang.reflect.Constuctor 类的 newlnstance() 实例方法,代码格式如下:

java.lang.Class Class 类对象名称 = java.lang.Class.forName(要实例化的类全称);
类名 对象名 = (类名)Class类对象名称.newInstance();

3.3. 调用对象的 clone() 方法。方法不常用,使用该方法创建对象时,要实例化的类必须继承 java.lang.Cloneable 接口。 调用对象的 clone() 方法创建对象的语法格式如下:

类名对象名 = (类名)已创建好的类对象名.clone();

4.调用 java.io.ObjectlnputStream 对象的 readObject() 方法

演示一下前三种创建对象的方法:

public class Dog implements Cloneable{
	// 实现 Cloneable 接口
	String name;
	int age;	
	void bark(){
		System.out.println("汪汪汪");
	}
	public static void main(String[] args)throws Exception {
		//使用new关键字创建对象
		Dog d1 = new Dog();
		// 调用 java.lang.Class 的 newInstance() 方法创建对象
		Class c1 = Class.forName("Dog");
		Dog d2 = (Dog)c1.newInstance();
		// 调用对象的 clone() 方法创建对象
        Dog d3 = (Dog)d2.clone();
	}
}

对上述示例的说明如下:
1.使用 new 关键字或 Class 对象的 newInstance() 方法创建对象时,都会调用类的构造方法。
2.使用 Class 类的 newInstance() 方法创建对象时,会调用类的默认构造方法,即无参构造方法。
3.使用 Object 类的 clone() 方法创建对象时,不会调用类的构造方法,它会创建一个复制的对象,这个对象和原来的对象具有不同的内存地址,但它们的属性值相同。

隐式创建
除了显式创建对象以外,在 Java 程序中还可以隐含地创建对象,例如下面几种情况。

1.String strName = “strValue”,其中的“strValue”就是一个 String 对象,由 Java 虚拟机隐含地创建。

2.字符串的“+”运算符运算的结果为一个新的 String 对象,示例如下:

String str1 = “Hello”;
String str2 = “Java”;
String str3 = str1+str2; //str3引用一个新的String对象

无论釆用哪种方式创建对象,Java 虚拟机在创建一个对象时都包含以下步骤:
1.给对象分配内存。
2.将对象的实例变量自动初始化为其变量类型的默认值。
3.初始化对象,给实例变量赋予正确的初始值。

注意:每个对象都是相互独立的,在内存中占有独立的内存地址,并且每个对象都具有自己的生命周期,当一个对象的生命周期结束时,对象就变成了垃圾,由 Java 虚拟机自带的垃圾回收机制处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值