为什么我不能实例化这样的对象?

时间:2018-10-07 14:10:26

标签: java netbeans constructor instance instantiation

我已经在与主类不同的文件中创建了“ CdFilm”类。但是我无法使用自己的类实例化新对象。我将其实例化为:

FileRentalVCD.CdFilm film = new FileRentalVCD.CdFilm(1);

这是“ CdFilm”类文件:

public class FileRentalVCD {
    private String judul, publisher;
    private char kategori;
    private int stok;


    public class CdFilm {
        //inheritance from FileRentalVCD
        private String judul, publisher;
        private char kategori;
        private int stok;
        //atribut class CDFilm
        private String pemain, sutrdara;

        //constructor
        public CdFilm (int s) {
            this.stok = s; 
        }
        //methods encapsulation

        public String getJudul() {
            return judul;
        }

        public void setJudul(String judul) {
            this.judul = judul;
        }
    }
}

这是主类,我在其中实例化对象:

public class RentalVCD {

    public void EntriCdFilm (FileRentalVCD.CdFilm input) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Masukan Judul : ");
        String judul = scan.next();
        input.setJudul(judul);
    }

    public static void main(String[] args) {
        System.out.println("Rental VCD Alif");
        System.out.println("1. Entri data CdFilm");
        System.out.println("2. Entri data CdMusik");
        System.out.println("3. Tampilkan data CdFilm");
        System.out.println("4. Tampilkan data CdMusik");
        Scanner scan = new Scanner(System.in);
        int pilihan = scan.nextInt();
        FileRentalVCD.CdFilm film = new FileRentalVCD.CdFilm(1);
    }
}

1 个答案:

答案 0 :(得分:2)

您可以,只是不能使用该语法。这有点违反直觉,但是您可以使用以下代码创建内部类的实例:

FileRentalVCD.CdFilm film = new FileRentalVCD(/* add any args here */).new CdFilm(1);

这是必需的,因为您需要外部类的实例才能创建内部类的实例。