每个编译单元(文件)都只有一个public 类。因为每个编译单元都只能有一个公共接口,用public类来表现。该接口可以按照要求包含众多的支持包访问权限的类。如果有一个以上的public 类,编译器就会报错。 并且public类的名称必须与文件名相同(严格区分大小写)。 当然一个编译单元内也可以没有public类。
在一个源文件.JAVA文件中可以有很多类,只有一个PUBLIC类其他的都不能是.
在java中:1.类只支持单继承 不支持多继承
class A{}
class B12563{}
class C extends A,B{} // C类不可以同时继承A类和B类
- 多个类可继承一个父类
class A{}
class B extends A{}
class C extends A{} // 类B和类C都可以继承类A
- 在Java中,多层继承是可以的
class A{}
class B extends A{} // 类B继承类A,类B是类A的子类
class C extends B{} // 类C继承类B,类C是类B的子类,同时也是类A的子类
- 成员方法特殊情况——覆盖
子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为override重写、复写或者覆盖。
重写需要注意的细节问题:
- 子类方法覆盖父类方法,必须要保证权限大于等于父类权限。
class Fu(){
void show(){}
public void method(){}
}
class Zi() extends Fu{
public void show(){} //编译运行没问题
void method(){} //编译错误
}
当定义了抽象函数的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类。
写抽象类的时候注意:
原来我写的内部类是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。所以在不做其他变动的情况下,最简单的解决办法是将public class改为public static class.
public static abstract class Employee {
public static abstract class Develop extends Employee{
public static class JavaEE extends Develop{
JavaEE ee = new JavaEE();//这样JavaEE才不会报错。