类是 Java 中的一种重要的复合数据类型,也是组成 Java 程序的基本要素,因为所有的 Java 程序都是基于类的。本节介绍如何定义类。
完整语法如下:
[public][abstract|final]class<class_name>[extends<class_name>]
[implements<interface_name>]
{
//定义属性部分
<property_type><property1>;
<property_type><property2>;
<property_type><property3>;
…
//定义方法部分
function1();
function2();
function3();
…
}
上述语法中各关键字的描述如下。
- public:表示“共有”的意思。如果使用 public 修饰,则可以被其他类和程序访问。每个 Java 程序的主类都必须是 public 类,作为公共工具供其他类和程序使用的类应定义为 public 类。
- abstract:如果类被 abstract 修饰,则该类为抽象类,抽象类不能被实例化,但抽象类中可以有抽象方法(使用 abstract 修饰的方法)和具体方法(没有使用 abstract 修饰的方法)。继承该抽象类的所有子类都必须实现该抽象 类中的所有抽象方法(除非子类也是 抽象类)。
- final:如果类被 final 修饰,则不允许被继承。
- class:声明类的关键字。
- class_name:类的名称。
- extends:表示继承其他类。
- implements:表示实现某些接口。
- property_type:表示成员变量的类型。
- property:表示成员变量名称。
- function():表示成员方法名称。
类名应该以下划线(_)或字母开头,最好以字母开头;第一个字母最好大写,如果类名由多个单词组成,则每个单词的首字母最好都大写;类名不能为 Java 中的关键字
public class Person
{
private String name; // 姓名
private int age; // 年龄
public void teli()
{ //定义说话的方法
System.out.println(name+"今年"+age+"岁!");
}
}
Java类的属性:成员变量的定义和声明
[public|protected|private][static][final]<type><variable_name>
各参数的含义如下。
- public、protected、private:用于表示成员变量的访问权限。
- static:表示该成员变量为类变量,也称为静态变量。
- final:表示将该成员变量声明为常量,其值无法更改。
- type:表示变量的类型。
- variable_name:表示变量名称。
初始化的默认值如下:
- 整数型(byte、short、int 和 long)的基本类型变量的默认值为 0。
- 单精度浮点型(float)的基本类型变量的默认值为 0.0f。
- 双精度浮点型(double)的基本类型变量的默认值为 0.0d。
- 字符型(char)的基本类型变量的默认值为 “\u0000”。
- 布尔型的基本类型变量的默认值为 false。
- 数组引用类型的变量的默认值为 null。
方法的形参和实参具有以下特点:
- 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在方法内部有效,方法调用结束返回主调 方法后则不能再使用该形参变量。
- 实参可以是常量、变量、表达式、方法等,无论实参是何种类型的量,在进行方法调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值、输入等办法使实参获得确定值。
- 实参和形参在数量、类型和顺序上应严格一致,否则会发生“类型不匹配” 的错误。
- 方法调用中发生的数据传送是单向的,即只能把实参的值传送绐形参,而不能把形参的值反向地传送给实参。因此在方法调用过程中,形参的值发生改变,而实参中的值不会变化。
Java创建对象详解:Java创建对象的几种方法
- 使用 new 关键字创建对象
类名 对象名=new 类名();
调用对象的 clone() 方法
该方法不常用,使用该方法创建对象时,要实例化的类必须继承 java.lang.Cloneable 接口。调用对象的 clone() 方法创建对象的语法格式如下:
类名对象名=(类名)已创建好的类对象名.clone();
public class Student implements Cloneable
{
//实现 Cloneable 接口
private String Name; //学生名字
private int age; //学生年龄
public Student(String name,int age)
{ //构造方法
this.Name=name;
this.age=age;
}
public Student()
{
this.Name="name";
this.age=0;
}
public String toString()
{
return"学生名字:"+Name+",年龄:"+age;
}
public static void main(String[] args)throws Exception
{
System.out.println("---------使用 new 关键字创建对象---------");
//使用new关键字创建对象
Student student1=new Student("小刘",22);
System.out.println(student1);
System.out.println("-----------调用 java.lang.Class 的 newInstance() 方法创建对象-----------");
//调用 java.lang.Class 的 newInstance() 方法创建对象
Class cl=Class.forName("Student");
Student student2=(Student)cl.newInstance();
System.out.println(student2);
System.out.println("-------------------调用对象的 clone() 方法创建对象----------");
//调用对象的 clone() 方法创建对象
Student student3=(Student)student2.clone();
System.out.println(student3);
}
}
Java对象的销毁
- 对象的引用超过其作用范围。
- 对象被赋值为 null。
3.在 Java 的 Object 类中还提供了一个 protected 类型的 finalize() 方法,因此任何 Java 类都可以覆盖这个方法,在这个方法中进行释放对象所占有的相关资源的操作。
网友评论