java - 如何在 Java 中使用或创建私有(private)类的变量

标签 java

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

包含私有(private)类的类

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

最佳答案

私有(private)内部类意味着您只能访问外部类内部,在本例中为 Customer。 事实上,如果您自己声明一个私有(private)内部类,那么您就是在说:“我希望没有人可以看到这个类”。所以你违背了你的一个代码。

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

关于java - 如何在 Java 中使用或创建私有(private)类的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31465637/

相关文章:

Java 集成测试无可运行方法错误 - Spring Runner

具有经度和纬度值的 Java K-Means

java - Android 通知区域自定义

java - 帮助识别该记录器

java - 与数据库一起使用的 Android recyclerview 列表不起作用

java - 当我们需要使用 curveTo() 和 setCurve() 时

java - EclipseLink MOXy 具有相同类型的递归数据结构/子元素

java - 使用 Boolean 或 boolean 声明数组

java - GAE/J 远程 API?

java - 谷歌地图 API : how can I make markers clickable?