📌  相关文章
📜  如何在Java为不同的类创建不同的包?

📅  最后修改于: 2022-05-13 01:54:40.033000             🧑  作者: Mango

如何在Java为不同的类创建不同的包?

首先让我们知道什么是Java的类和包。 Java中的类是创建对象的模型。这意味着对象的属性和操作是在类中编写的。属性由变量表示,对象的动作由方法表示。因此,一个类包含变量和方法。对象中也可以使用相同的变量,因为它们是从类创建的。这些变量也称为“实例变量”,因为它们是在对象(实例)内部创建的。

插图:

class Human
{
   // Properties --> Instance variables
   String name;
   int age;

   // Actions --> methods
   void speak()
   {

       System.out.println("Hey there! I am " + name);
       System.out.println("My age is " + age);
   }
}

输出:

Hey there! I am Vasanth Kumar
My age is 20

Java的软件包



在Java,包是类、子包和接口的集合。即一个包代表一个字典,其中包含一组相关的类和接口。每当我们编写如下所示的语句时,我们都会导入Java.io.* 包的所有类。这里, Java是一个目录名,io 是其中的另一个子目录。 * 代表该 io 子目录的所有类和接口。

import java.io.*; 

我们有很多这样的包,例如Java.lang, Java.util ,并且确实存在更多的包,其中包含类。为了使用,让我们使用最常用的包,即用于Java设计的 'lang' 包和用于输入输出操作的 'io' 包。

让我们讨论一下Java中包的优点如下:

  1. 包可用于将与接口相关的类安排到一个组中。这将在包中执行相同任务的所有类和接口放在一起。例如,在Java,所有执行输入和输出操作的类和接口都存储在Java.io 包中。
  2. 包将类和接口隐藏在单独的子目录中。
  3. 一个包的类和接口与另一个包的类和接口隔离。

Java中列出了两种类型的包:

  • 类型 1:内置包
  • 类型 2:用户定义的包

类型 1:内置包

这些是Java语言中已经可用的包。这些包为程序员提供了几乎所有必要的类、接口和方法来执行任何任务。它们如下:

java.lang
java.util
java.io
java.awt
java.net
java.applet
java.text
java.sql

javax.swing

类型 2:用户定义的包

就像前面展示的内置包一样, Java语言的用户也可以创建自己的包。它们被称为用户定义的包。这些包也可以导入到其他类中,并以与内置包完全相同的方式使用。



语法:创建包,使用package关键字

2.1.1创建包

package package_name ;  

2.1.2在包内创建子包

package package_name.subpackagename ;

2.2编译

C:\> javac -d . classname.java

2.3运行程序

C:\> java packagename.classname

以上语法仅对 windows CMD shell 有效,对于 rlinux 和 mac zsh shell,请参考以下媒体,以与下面提供的相同方式感知

执行:

现在让我们将类划分为包

步骤1:定义一个StudentData类,其中包含学生的以下信息:



  • ID:它是一个字符串,存储每个学生的唯一ID
  • 姓名:它是一个字符串,表示学生的姓名。

第 2 步:使用名为 location 的私有属性创建另一个类 StudentDataExtended。它基本上是一个存储学生位置的字符串。

第三步:现在在这个类中定义一个方法addDetails()方法来存储学生的详细信息;以及一个方法printDetails()方法,该方法按照学生 id 的排序顺序输出学生的详细信息。

插图:

Enter the number of students : 2

Enter the details of Student 1 (id, name, location):
B200 Ajay Hyderabad

Enter the details of Student 2 (id, name, location):
B100 Ramesh Hyderabad

输出:

The Student Details are:
B100 Ramesh Hyderabad
B200 Ajay Hyderabad

执行:

现在让我们拿出真实的可运行示例来实现我们上面讨论和说明的内容:

示例 1-A:

Java
// Java Program Illustrating Dividion of Classes into
// Packages where Class StudentData
// which creates first package i.e pack1
  
// Importing package
package pack1;
  
// Main class
public class StudentData {
  
    private String id;
    private String name;
  
    // Method 1
    public void addStudentData(String id, String name)
    {
        // This keyword refers to current instance itself
        this.id = id;
        this.name = name;
    }
  
    // Getter setters Methods
  
    // Use getter methods so that we can
    // access private members for other packages
    public String getId() { return id; }
    public String getName() { return name; }
}


Java
// Java Program Illustrating Dividion of Classes into
// Packages where Class StudentDataExtended creates
// Second package- pack2 and uses the first package
  
// Importing packages
package pack2;
// Importing required classes
// from pre-defined packages
import java.io.*;
import java.lang.*;
import java.util.*;
import pack1.*;
  
// Main class
class StudentDataExtended extends StudentData {
  
    private String location;
    public void addDetails(String id, String name,
                           String location)
    {
        addStudentData(id, name);
  
        // This keyword refers to current object itself
        this.location = location;
    }
  
    // Method 1
    public static void
    printDetails(TreeMap map)
    {
  
        // Iterating via for each loop
        for (String a : map.keySet()) {
  
            StudentDataExtended student = map.get(a);
  
            // Print ID and name of student
            System.out.println(student.getId() + " "
                               + student.getName() + " "
                               + student.location);
        }
    }
  
    // Method 2
    // Main driver method
    public static void main(String[] args)
    {
  
        // Display a message for asking input from the user
        System.out.print("Enter the number of students : ");
  
        // Scanner class to read user input
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
  
        String buffer = sc.nextLine();
  
        int count = 1;
        // Creating a TreeMap
        TreeMap map
            = new TreeMap<>();
  
        while (n != 0) {
  
            System.out.println(
                "Enter the details of Student " + count
                + " (id, name, location):");
  
            count++;
  
            String details = sc.nextLine();
            String studentInfo[] = details.split(" ");
  
            StudentDataExtended student
                = new StudentDataExtended();
  
            student.addDetails(studentInfo[0],
                               studentInfo[1],
                               studentInfo[2]);
            map.put(studentInfo[0], student);
            n--;
        }
  
        // Display message
        System.out.println("\nThe Student Details are:");
  
        // Calling above method 1 to
        // print details of the students
        printDetails(map);
    }
}


示例 1-B:

Java

// Java Program Illustrating Dividion of Classes into
// Packages where Class StudentDataExtended creates
// Second package- pack2 and uses the first package
  
// Importing packages
package pack2;
// Importing required classes
// from pre-defined packages
import java.io.*;
import java.lang.*;
import java.util.*;
import pack1.*;
  
// Main class
class StudentDataExtended extends StudentData {
  
    private String location;
    public void addDetails(String id, String name,
                           String location)
    {
        addStudentData(id, name);
  
        // This keyword refers to current object itself
        this.location = location;
    }
  
    // Method 1
    public static void
    printDetails(TreeMap map)
    {
  
        // Iterating via for each loop
        for (String a : map.keySet()) {
  
            StudentDataExtended student = map.get(a);
  
            // Print ID and name of student
            System.out.println(student.getId() + " "
                               + student.getName() + " "
                               + student.location);
        }
    }
  
    // Method 2
    // Main driver method
    public static void main(String[] args)
    {
  
        // Display a message for asking input from the user
        System.out.print("Enter the number of students : ");
  
        // Scanner class to read user input
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
  
        String buffer = sc.nextLine();
  
        int count = 1;
        // Creating a TreeMap
        TreeMap map
            = new TreeMap<>();
  
        while (n != 0) {
  
            System.out.println(
                "Enter the details of Student " + count
                + " (id, name, location):");
  
            count++;
  
            String details = sc.nextLine();
            String studentInfo[] = details.split(" ");
  
            StudentDataExtended student
                = new StudentDataExtended();
  
            student.addDetails(studentInfo[0],
                               studentInfo[1],
                               studentInfo[2]);
            map.put(studentInfo[0], student);
            n--;
        }
  
        // Display message
        System.out.println("\nThe Student Details are:");
  
        // Calling above method 1 to
        // print details of the students
        printDetails(map);
    }
}

输出: