如何在Java中使用或创建私有类的变量

如何在Java中使用或创建私有类的变量,java,Java,我正在创建一个库存系统(这样做是为了好玩),我选择使用队列作为java中的数据结构。我在公共类中使用私有类,当我试图运行它测试队列时,我不能声明私有类的变量。这是我的密码 包含私有类的类 public class Customer {//begining of class private class Custque //creating private class to use as node { private int Trn; priv

我正在创建一个库存系统(这样做是为了好玩),我选择使用队列作为java中的数据结构。我在公共类中使用私有类,当我试图运行它测试队列时,我不能声明私有类的变量。这是我的密码

包含私有类的类

public class Customer
{//begining of class

    private class Custque //creating private class to use as node
   {
        private int    Trn; 
        private String Lname;
        private String Fname;
        private String Mname;
        private String Mstatus;
        private String DOB;
        private String Email;
        private String permanentadd;
        private String mailingadd;
        Custque Next;


          public  Custque()//default constructor
          {
            Trn=0;
            Lname="";
            Fname="";
            Mname="";
            Mstatus="";
            DOB="";
            Email="";
            permanentadd="";
            mailingadd="";
            this.Next= Next;

          }

          public Custque(int T, String Ln, String Fn,String Mn, String MS, String dob, String email, String PA, String MA)//primary constructor
          {
               Trn=T;
               Lname=Ln;
               Fname=Fn;
               Mname=Mn;
               Mstatus=MS;
               DOB=dob;
               Email=email;
               permanentadd=PA;
               mailingadd=MA;
           }

         public void setTrn(int T)//trn setter
         {
           this.Trn= T;

         }

         public int getTrn() // trn getter
         {
           return Trn; 
         }

        public void setLname(String Ln)
        {
          this.Lname=Ln;
        }

        public String getLname()
        {
         return Lname;
        }

        public void setFname(String Fn)
        {
         this.Fname=Fn;
        }

       public String getFname()
       {
        return Fname;
       }

       public void setMname(String Mn)
       {
        this.Mname=Mn;
       }

      public String getMname()
      {
         return Mname;
      }

      public void setMstatus(String Ms)
      {
        this.Mstatus=Ms;
      }

      public String getMstatus()
      {
       return Mstatus;
      }

     public void setDOB(String dob)
     {
      this.DOB=dob;
     }

      public String getDOB()
     {
       return DOB;
     }

     public void setEmail(String email)
     {
      this.Email=email;
     }

      public String getEmail()
      {
       return Email;
      }

       public void setpermanentadd(String PA)
       {
         this.permanentadd=PA;
       }

       public String getpermanentadd()
        {
          return permanentadd;
        }
       public void setMailingAdd(String MA)
       {
         this.mailingadd=MA;
       }

       public String getmailingAdd()
      {
       return mailingadd;
      }

 }// end of private class

 private Custque front;
 private Custque last;

 public void enqueue (int trn, String Ln, String Fn, String Mn, String MS,String dob,String email,String PA, String MA)
 {
     Custque que = new Custque();//  creating a variable for the queue is null
     if (que.equals(null))// testing if the queue is null
        System.out.println("An error has occur");

       que.setTrn(trn);
       que.setLname(Ln);
       que.setFname(Fn);
       que.setMname(Mn);
       que.setMstatus(MS);
       que.setDOB(dob);
       que.setEmail(email);
       que.setpermanentadd(PA);
       que.setMailingAdd(MA);

      if(front.equals(null))
        last=front=que;
      else
        last.Next = que; 

       last = que; 

 }// end of enqueue

 public Custque dequeue()
 {
     if (front.equals(null)) 
     {
         System.out.printf("Queue is Empty");
         return null;
     }

     Custque i;
     i=front;
     front = front.Next;

    return front ; 
 }// end of dequeue



 void display()
 {
      Custque d;
      if(front != null)
      {
         d=front;
         System.out.printf("" + d);
      }
 }


}//end of main class
我的驾驶课

import java.util.Scanner;


public class driver 
{

public static void main(String[] args)
{
        int t,i;
        String ln,fn,mn,ms,dob,email,pa,ma;
        Custque s;/* line of error*/

        for(i=0; i<5;i++)
        {
            System.out.printf("");
            Scanner num = new Scanner(System.in);
            t= num.nextInt();

            System.out.printf("");
            Scanner l = new Scanner(System.in);
            ln = l.nextLine();

            System.out.printf("");
            Scanner f = new Scanner(System.in);
            fn = f.nextLine();

            System.out.printf("");
            Scanner m = new Scanner(System.in);
            mn = m.nextLine();

            System.out.printf("");
            Scanner mar = new Scanner(System.in);
            ms = mar.nextLine();

            System.out.printf("");
            Scanner d = new Scanner(System.in);
            dob = d.nextLine();

            System.out.printf("");
            Scanner e = new Scanner(System.in);
            email = e.nextLine();

            System.out.printf("");
            Scanner per = new Scanner(System.in);
            pa = per.nextLine();

            System.out.printf("");
            Scanner mai = new Scanner(System.in);
            ma = mai.nextLine();


        }// end of loop

}

}//end of driver
import java.util.Scanner;
公务舱司机
{
公共静态void main(字符串[]args)
{
int t,i;
字符串ln、fn、mn、ms、dob、email、pa、ma;
Custque s;/*错误行*/

对于(i=0;i私有内部类意味着您只能在外部类内部访问,在本例中为Customer。 事实上,如果你正在声明一个私有的内部类,你自己会说:“我希望没有人能看到这个类”,所以你违背了你的一个代码


但是,就像满是鳗鱼的@Hovercraft所说,这背后有什么要求。也许我们可以提供更多帮助。或者这只是对java语义的疑问?

为什么要使用“私有”内部类?这一要求背后的动机是什么?一个建议。具有长参数列表的构造函数(如Custque)很难使用,也很难维护。该类是构建器模式的最佳候选。使用该模式将使您的类更易于使用,并使您的代码更易于阅读和维护。另一个建议是。尽管编译器不严格要求它们,但Java仍然有官方的编码风格要求。遵循它们可以使您的代码更容易让其他人理解。例如,类成员(例如方法和实例字段)本地变量不应该用大写字母开头。好的,我理解了使用C++中的队列和栈链接列表实现。我已经知道使用头文件的方法,但是java不支持。我基本上想了解的是如何在java中使用队列和栈。