源码如下:
package testjava.cn;
class student {
private String name;
int number;
protected int age;
protected student (String name,int number,int age) {
this.name = name;
this.number = number;
this.age = age;
}
default void Info() {
System.out.println("姓名:"+"学号:"+"年龄:");
}
}
public class Scholl {
public static void main(String args[]) {
student t = new student("tom",123,18);
t.Info();
}
} 为什么在Info方法里我使用default控制符显示出错,而改用public后又好了,default的权限不是包权限么,而且这个方法也是成员发法啊。PS:我改用public进行编译没问题,可是运行却出错提示:找不到或无法加载主类。
package testjava.cn;
class student {
private String name;
int number;
protected int age;
protected student (String name,int number,int age) {
this.name = name;
this.number = number;
this.age = age;
}
default void Info() {
System.out.println("姓名:"+"学号:"+"年龄:");
}
}
public class Scholl {
public static void main(String args[]) {
student t = new student("tom",123,18);
t.Info();
}
} 为什么在Info方法里我使用default控制符显示出错,而改用public后又好了,default的权限不是包权限么,而且这个方法也是成员发法啊。PS:我改用public进行编译没问题,可是运行却出错提示:找不到或无法加载主类。
找不到或无法加载主类,可能是你的类名和文件名不一致,即含有main函数的类的类名一定要和文件名一样。
java程序中,访问修饰符可以出项在类、成员变量、构造方法或方法前面,是用来控制访问权限的修饰符。java语言中提供了4种形式的访问修饰符:
1.public java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包访问。
2.private java语言中队访问权限限制最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象,其子类不能访问,更不允许跨包访问。
3.protect java语言中介于public和private之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法以及子类访问。即使子类在不同的包中也可以访问。
4.(default)即不加任何访问修饰符,通常称为“默认访问模式”。该模式下,只允许在同一个包中进行访问。
找不到或无法加载主类,可能是你的类名和文件名不一致,即含有main函数的类的类名一定要和文件名一样。
这个代码我调试过了的,改成public执行通过了的