我是一个母亲阶级的生活。
Bd&专辑是来自Livre的两个扩展课程
我在主()上遇到问题,我无法启动&从类专辑中声明一个对象(myAlb):这就是我所做的:
album [] myAlb;
myAlb =新专辑[nbr_of_albums];
myAlb [i] =专辑(1,5,"作者","标题"); //对于一张专辑我称之为album = error
的构造函数这里是错误:没有可以访问类型为livre的封闭实例。必须使用livre类型的封闭实例限定分配(例如x.new A(),其中x是livre的实例)。
这是我的完整代码来源:
import java.util.*;
public class livre {
public abstract class book {
String titre;
String auteur;
float prix;
int nbr_pages;
book(String titre,String auteur, float prix,int nbr_pages){
this.titre = titre;
this.auteur = auteur;
this.prix = prix;
this.nbr_pages = nbr_pages;
}
abstract void affichage();
}
public class bd extends book {
String couleur;
bd(String titre,String auteur, float prix,int nbr_pages,String couleur){
super(titre,auteur,prix,nbr_pages);
this.couleur = couleur;
}
void affichage(){
System.out.println("\n\nbook:"+titre);
System.out.println("+ auteur"+auteur);
System.out.println("+ prix"+prix);
System.out.println("+ nbr_pages"+nbr_pages);
System.out.println("+ "+couleur);
}
}
public final class album extends book {
String [] couleur;
void changerCouleur(){
int nbr = 0;
System.out.print("Plz set the nbr of the page that you want to color: ");
Scanner sc = new Scanner(System.in);
while (!(nbr<= nbr_pages && nbr > 0 )){ nbr = sc.nextInt();}
System.out.print("Plz set what color u wanna colorate this page: ");
couleur[nbr] = sc.nextLine();
sc.close();
}
void affichage(){
System.out.println("\t\t book:"+titre);
System.out.println("+ auteur"+auteur);
System.out.println("+ prix"+prix);
System.out.println("+ nbr_pages"+nbr_pages);
System.out.println("+ couleurs des pages: ");
for(int i=0;i<nbr_pages;i++) System.out.println(" =>Page["+i+"]= "+couleur[i]);
}
album(String titre,String auteur, float prix,int nbr_pages){
super(titre,auteur,prix,nbr_pages);
couleur = new String[nbr_pages];
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
album[] myAlb; bd[] myBd;
Scanner sc = new Scanner(System.in);
System.out.print("Set the nbr of Albums that you want to make: ");
int nbrAlbum = sc.nextInt();
myAlb= new album[nbrAlbum];
System.out.print("Set the nbr of BD that you want to make: ");
int nbrBd = sc.nextInt();
myBd= new bd[nbrBd];
for(int i=0;i<nbrAlbum;i++){
System.out.print("\tAlbum nbr "+i+": ");
System.out.print("=>titre = ");
String titre = sc.nextLine();
System.out.print("=>auteur = ");
String auteur = sc.nextLine();
System.out.print("=>prix = ");
float prix = sc.nextFloat();
System.out.print("=>nbr de Pages = ");
int nbr_pages = sc.nextInt();
myAlb[i] = new album(titre,auteur,prix,nbr_pages);
}
}
}
答案 0 :(得分:0)
将public abstract class book
替换为public static abstract class book
将public final class album extends book
替换为public final static class album extends book
那应该有用。添加static
修饰符允许您实例化内部类而不具有封闭类的实例。您将书类作为内部类,这就是您需要static
修饰符的原因。
如果您还想要实例化bd
课程,您还应该为其static
添加。
答案 1 :(得分:0)
您的代码可以重写如下:
public class livre { public static void main(String [] args){
abstract class book {
String titre;
String auteur;
float prix;
int nbr_pages;
book(String titre,String auteur, float prix,int nbr_pages){
this.titre = titre;
this.auteur = auteur;
this.prix = prix;
this.nbr_pages = nbr_pages;
}
abstract void affichage();
}
class bd extends book {
String couleur;
bd(String titre,String auteur, float prix,int nbr_pages,String couleur){
super(titre,auteur,prix,nbr_pages);
this.couleur = couleur;
}
@Override
void affichage(){
System.out.println("\n\nbook:"+titre);
System.out.println("+ auteur"+auteur);
System.out.println("+ prix"+prix);
System.out.println("+ nbr_pages"+nbr_pages);
System.out.println("+ "+couleur);
}
}
final class album extends book {
String [] couleur;
void changerCouleur(){
int nbr = 0;
System.out.print("Plz set the nbr of the page that you want to color: ");
Scanner sc = new Scanner(System.in);
while (!(nbr<= nbr_pages && nbr > 0 )){ nbr = sc.nextInt();}
System.out.print("Plz set what color u wanna colorate this page: ");
couleur[nbr] = sc.nextLine();
sc.close();
}
@Override
void affichage(){
System.out.println("\t\t book:"+titre);
System.out.println("+ auteur"+auteur);
System.out.println("+ prix"+prix);
System.out.println("+ nbr_pages"+nbr_pages);
System.out.println("+ couleurs des pages: ");
for(int i=0;i<nbr_pages;i++) System.out.println(" =>Page["+i+"]= "+couleur[i]);
}
album(String titre,String auteur, float prix,int nbr_pages){
super(titre,auteur,prix,nbr_pages);
couleur = new String[nbr_pages];
}
}
album[] myAlb; bd[] myBd;
Scanner sc = new Scanner(System.in);
System.out.print("Set the nbr of Albums that you want to make: ");
int nbrAlbum = sc.nextInt();
myAlb= new album[nbrAlbum];
System.out.print("Set the nbr of BD that you want to make: ");
int nbrBd = sc.nextInt();
myBd= new bd[nbrBd];
for(int i=0;i<nbrAlbum;i++){
System.out.print("\tAlbum nbr "+i+": ");
System.out.print("=>titre = ");
String titre = sc.nextLine();
System.out.print("=>auteur = ");
String auteur = sc.nextLine();
System.out.print("=>prix = ");
float prix = sc.nextFloat();
System.out.print("=>nbr de Pages = ");
int nbr_pages = sc.nextInt();
myAlb[i] = new album(titre,auteur,prix,nbr_pages);
}
}
}
有关嵌套类的更多信息,请访问以下链接: https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html