Java - 对象和类

Java - 对象和类 首页 / Java入门教程 / Java - 对象和类

在本章中,无涯教程将研究概念-类(class)和对象(object) 。

  • Class   - 类,可以定义为模板,以描述其对象所支持的行为或状态。 

  • Object - 对象,是类的实例,具有状态和行为。 例如:一条狗有状态-颜色,名字,进食。

Java 对象

现在深入研究什么是对象 ,如果考虑现实世界,可以找到身边周围的许多对象 ,如 汽车,狗,人类等等,所有这些对象都有一种状态和一种行为。如:一只狗,那么它的[状态]是-名称,品种,颜色,[行为]是-吠叫,摇尾巴,奔跑。

Java 类

类是创建单个对象的模板,以下是一个类的示例。

链接:https://www.learnfk.comhttps://www.learnfk.com/java/java-object-classes.html

来源:LearnFk无涯教程网

public class Dog {
   String breed;
   int age;
   String color;

   void barking() {
   }

   void hungry() {
   }

   void sleeping() {
   }
}

一个类可以有任意数量的方法来访问各种方法的值,在上面的例子中,barking()、hunting()和sleep()都是方法。

下面是在研究Java语言的类时需要讨论的一些重要主题。

Java 构造函数

当讨论类时,最重要的子函数之一是构造函数,每个类都有一个构造函数,如果没有显式地为一个类编写构造函数,Java编译器就会为该类构建一个默认的构造函数。

每次创建(new)新对象时,将至少调用一个构造函数,构造函数的主要规则是它们应该与类同名,一个类可以有多个构造函数。

以下是构造函数的示例

public class Puppy {
   public Puppy() {
   }

   public Puppy(String name) {
      //这个构造函数有一个参数,name。
   }
}

注意  -  无涯教程有两种不同类型的构造函数。将在后面的章节中详细讨论构造函数。

Java 创建对象

如前所述, 对象是从类创建的。在Java中,new关键字用于创建新对象 。

public class Puppy {
   public Puppy(String name) {
      //这个构造函数有一个参数,name。
      System.out.println("Passed Name is :" + name );
   }

   public static void main(String []args) {
      //以下语句将创建一个对象 myPuppy
      Puppy myPuppy = new Puppy( "Learnfk" );
   }
}

如果编译并运行上面的程序,那么它将产生以下输出-

Passed Name is :Learnfk

访问变量和方法

访问实例变量和方法。要访问实例变量,以下是完全限定路径-

/* 首先创建一个对象 */
ObjectReference=new Constructor();

/* 现在调用一个变量如下 */
ObjectReference.variableName;

/* 现在你可以调用一个类方法如下 */
ObjectReference.MethodName();

此示例说明如何访问类的实例变量和方法。

public class Puppy {
   int puppyAge;

   public Puppy(String name) {
      //这个构造函数有一个参数: name。
      System.out.println("Name chosen is :" + name );
   }

   public void setAge( int age ) {
      puppyAge = age;
   }

   public int getAge( ) {
      System.out.println("Puppy's age is :" + puppyAge );
      return puppyAge;
   }

   public static void main(String []args) {
      /*对象创建 */
      Puppy myPuppy = new Puppy( "Learnfk" );

      /* 调用类方法设置小狗的年龄 */
      myPuppy.setAge( 2 );

      /* 调用另一个类方法来获取小狗的年龄 */
      myPuppy.getAge();

      /* 您也可以按如下方式访问实例变量 */
      System.out.println("Variable Value :" + myPuppy.puppyAge );
   }
}

如果无涯教程编译并运行上面的程序,那么它将产生以下输出-

Name chosen is :Learnfk
Puppy's age is :2
Variable Value :2

Java Package 包

简单地说,它是对类和接口进行分类的一种方法,当用Java开发应用程序时,将会编写数百个类和接口,因此对这些类进行分类是必须的,使代码能有效隔离。

Import 语句

例如,以下行将要求编译器加载目录JAVA_INSTALLATION/JAVA/io-中的所有可用类

import java.io.*;

将创建两个类,它们是Employee和EmployeeTest。

首先打开记事本并添加以下代码。请记住,这是Employee类,该类是公共类(public)。现在,用名称Employee.java保存这个源文件。

Employee类有四个实例变量-name、age、designation 和 salary。该类有一个显式定义的构造函数,它接受一个参数。

import java.io.*;
public class Employee {

   String name;
   int age;
   String designation;
   double salary;

   //这是Employee类的构造函数
   public Employee(String name) {
      this.name = name;
   }

   //将 Employee 的年龄分配给变量 age。
   public void empAge(int empAge) {
      age = empAge;
   }

   /* 将名称分配给变量名称。*/
   public void empDesignation(String empDesig) {
      designation = empDesig;
   }

   /* 将薪水分配给薪水变量。*/
   public void empSalary(double empSalary) {
      salary = empSalary;
   }

   /* 打印员工详细信息 */
   public void printEmployee() {
      System.out.println("Name:"+ name );
      System.out.println("Age:" + age );
      System.out.println("Designation:" + designation );
      System.out.println("Salary:" + salary);
   }
}

无涯教程将创建一个单独的类。并实例化这个对象为每个变量赋值。

将以下代码保存在EmployeeTest.java文件中。

import java.io.*;
public class EmployeeTest {

   public static void main(String args[]) {
      /* 使用构造函数创建两个对象 */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");

      //为创建的每个对象调用方法
      empOne.empAge(26);
      empOne.empDesignation("Senior Software Engineer");
      empOne.empSalary(1000);
      empOne.printEmployee();

      empTwo.empAge(21);
      empTwo.empDesignation("Software Engineer");
      empTwo.empSalary(500);
      empTwo.printEmployee();
   }
}

现在,编译这两个类,然后运行EmployeeTest以查看输出,如下所示-

C:\> javac Employee.java
C:\> javac EmployeeTest.java
C:\> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

AI技术内参 -〔洪亮劼〕

算法面试通关40讲 -〔覃超〕

即时消息技术剖析与实战 -〔袁武林〕

Node.js开发实战 -〔杨浩〕

深入浅出云计算 -〔何恺铎〕

TensorFlow 2项目进阶实战 -〔彭靖田〕

爱上跑步 -〔钱亮〕

Python实战 · 从0到1搭建直播视频平台 -〔Barry〕

AI绘画核心技术与实战 -〔南柯〕

好记忆不如烂笔头。留下您的足迹吧 :)