🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## :-: java创建对象 对象是根据类创建的,在Java中,使用new来创建一个新的对象,创建需要三步 * 声明:声明一个对象,包括名称和对象类型 * 实例化:使用new关键字来创建一个对象 * 初始化:使用new 创建对象时,会调用构造方法初始化对象 ``` public class Puppy{ public Puppy(String name){ //这个构造器仅有一个参数:name System.out.println("小狗的名字是 : " + name ); } public static void main(String \[\]args){ // 下面的语句将创建一个Puppy对象 Puppy myPuppy = new Puppy( "tommy" ); } } ``` **实例** 下面的例子展示如何访问实例变量和调用成员方法: ``` public class Puppy{ int puppyAge; public Puppy(String name){ // 这个构造器仅有一个参数:name System.out.println("小狗的名字是 : " + name ); } public void setAge( int age ){ puppyAge = age; } public int getAge( ){ System.out.println("小狗的年龄为 : " + puppyAge ); return puppyAge; } public static void main(String []args){ /* 创建对象 */ Puppy myPuppy = new Puppy( "tommy" ); /* 通过方法来设定age */ myPuppy.setAge( 2 ); /* 调用另一个方法获取age */ myPuppy.getAge( ); /*你也可以像下面这样访问成员变量 */ System.out.println("变量值 : " + myPuppy.puppyAge ); } } ``` 编译运行结果: ~~~ 小狗的名字是 : tommy 小狗的年龄为 : 2 变量值 : 2 ~~~ ## 源文件声明规则 在本节的最后部分,我们将学习源文件的声明规则。当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则。 * **一个源文件中只能有一个public类** * ** 一个源文件可以有多个非public类** * 源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。 * 如果一个类定义在某个包中,那么package语句应该在源文件的首行。 * 如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。 * import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。 类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在访问控制章节介绍。 除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。 ##Import语句 在Java中,如果给出一个完整的的限定名,包括包名,类名,那么Java编译器就很容易定位到源代码或者类,,import语句就是提供一个合理的路径,是编译器可以找到某个类。 例如下面命令将会命令编译器载入Java_installation/Java/io路径下的所有类; ~~~ import java.io.*; ~~~ ## 一个简单的例子 在该例子中,我们创建两个类:**Employee**和**EmployeeTest**。 首先打开文本编辑器,把下面的代码粘贴进去。注意将文件保存为 Employee.java。 Employee类有四个成员变量:name、age、designation和salary。该类显式声明了一个构造方法,该方法只有一个参数。 ## Employee.java 文件代码: ``` import java.io.*; public class Employee{ String name; int age; String designation; double salary; // Employee 类的构造器 public Employee(String name){ this.name = name; } // 设置age的值 public void empAge(int empAge){ age = empAge; } /* 设置designation的值*/ public void empDesignation(String empDesig){ designation = empDesig; } /* 设置salary的值*/ public void empSalary(double empSalary){ salary = empSalary; } /* 打印信息 */ public void printEmployee(){ System.out.println("名字:"+ name ); System.out.println("年龄:" + age ); System.out.println("职位:" + designation ); System.out.println("薪水:" + salary); } } ``` 程序都是从main方法开始执行。为了能运行这个程序,必须包含main方法并且创建一个实例对象。 下面给出EmployeeTest类,该类实例化2个 Employee 类的实例,并调用方法设置变量的值。 将下面的代码保存在 EmployeeTest.java文件中。 ## EmployeeTest.java 文件代码: ``` import java.io.*; public class EmployeeTest{ public static void main(String []args){ /* 使用构造器创建两个对象 */ Employee empOne = new Employee("RUNOOB1"); Employee empTwo = new Employee("RUNOOB2"); // 调用这两个对象的成员方法 empOne.empAge(26); empOne.empDesignation("高级程序员"); empOne.empSalary(1000); empOne.printEmployee(); empTwo.empAge(21); empTwo.empDesignation("菜鸟程序员"); empTwo.empSalary(500); empTwo.printEmployee(); } } ``` 编译这两个文件并且运行 EmployeeTest 类,可以看到如下结果: ~~~ $ javac EmployeeTest.java $ java EmployeeTest 名字:RUNOOB1 年龄:26 职位:高级程序员 薪水:1000.0 名字:RUNOOB2 年龄:21 职位:菜鸟程序员 薪水:500.0 ~~~