亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

精通 Java:理解对象、类与核心 OOP 概念

Java 是面向对象语言。作为具备面向对象特性的语言,Java 支持以下基本概念:

本章重点讲解类和对象概念。

Java 中的对象

现实世界中有许多对象:汽车、狗、人等。所有对象都有状态和行为。

以狗为例,状态:名字、品种、颜色;行为:吠叫、摇尾巴、奔跑。

软件对象与现实对象特征相似。软件对象也有状态和行为。状态存储在字段中,行为通过方法展现。

软件开发中,方法操作对象内部状态,对象间通信通过方法进行。

Java 中的类

类是创建单个对象的蓝图。

以下是类示例:

示例

public class Dog { 
  String breed; 
  int age; 
  String color; 
  void barking() { } 
  void hungry() { } 
  void sleeping() { } 
}

类可包含以下变量类型:

类可有任意数量方法访问各类变量值。上例中 barking()、hungry()、sleeping() 为方法。

探讨 Java 类时需讨论以下重要主题:

构造器

讨论类时最重要的子主题是构造器。每个类都有构造器。若不显式编写,Java 编译器提供默认构造器,将所有成员变量初始化为零。一旦定义自己的构造器,默认构造器不再使用。

每次创建新对象至少调用一个构造器。构造器主要规则:名称与类同名。一个类可有多个构造器。

构造器示例:

示例

public class Puppy { 
  public Puppy() { } 
  public Puppy(String name) { 
    // 此构造器有一个参数 name 
  } 
}

Java 还支持单例类,只能创建一个类实例。

注意 − 有两种不同类型构造器,后续章节详细讨论。

创建对象

如前所述,类提供对象蓝图。基本上,对象从类创建。Java 用 new 关键字创建新对象。

从类创建对象有三步:

创建对象示例:

示例

Live Demo
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( "tommy" ); 
  } 
}

编译运行上程序将产生:

输出

Passed Name is :tommy

访问实例变量和方法

实例变量和方法通过创建的对象访问。访问实例变量的完整路径:

/* 首先创建对象 */
ObjectReference = new Constructor();
/* 现在调用变量 */
ObjectReference.variableName;
/* 现在调用类方法 */
ObjectReference.MethodName();

示例

此例解释如何访问类的实例变量和方法。

Live Demo
public class Puppy { 
  int puppyAge; 
  public Puppy(String 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( "tommy" ); 
    /* 调用类方法设置狗年龄 */ 
    myPuppy.setAge( 2 ); 
    /* 调用另一方法获取年龄 */ 
    myPuppy.getAge( ); 
    /* 也可直接访问实例变量 */ 
    System.out.println("Variable Value :" + myPuppy.puppyAge ); 
  } 
}

编译运行结果:

输出

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

源文件声明规则

最后看源文件声明规则。声明类、import 语句和 package 语句时必不可少。

类有多种访问级别和类型:抽象类、final 类等。将在访问修饰符章节详述。

除上述类型,Java 还有特殊类:内部类和匿名类。

Java 包

简单说,包是对类和接口分类。开发 Java 应用会编写成百上千个类和接口,分类管理至关重要且能简化工作。

Import 语句

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; 
  } 
  // 设置员工年龄 
  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); 
  } 
}

如前所述,处理从 main 方法开始。因此运行 Employee 类需有 main 方法并创建对象。创建单独类完成这些任务。

以下是 EmployeeTest 类,创建两个 Employee 实例并调用方法为每个变量赋值。

保存为 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

下一步

下节将讨论 Java 基本数据类型及其在应用开发中的使用。


java

  1. C# 类与对象:面向对象编程的基石
  2. C++类与对象:面向对象编程实战指南
  3. C++ 友元函数与友元类:突破访问控制的利器
  4. Java 变量与字面量:全面指南
  5. Java 类与对象:实用指南
  6. 深入理解 Java final 关键字:变量、方法与类的不可变性
  7. Java instanceof 运算符完全指南:用法、继承与接口检查
  8. Java 抽象类与抽象方法完全指南
  9. 精通 Java 嵌套类与内部类:类型、示例与最佳实践
  10. 精通 Java 匿名内部类:定义、语法与实战示例
  11. Java 单例模式详解:安全实现与使用指南
  12. 掌握 Java 泛型:构建可复用、类型安全的代码