Static
当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率,如:Math.sqrt()
静态方法,只能访问静态的成员,非静态的方法,可以访问静态成员和非静态成员 (必须遵守访问权限)
注意这个的意思是静态方法不可以使用this访问本类的成员,但可以在静态方法内创建本类型的实例对象,使用此对象的属性与方法
main方法与以上同理,因为main方法本身为静态函数;
abstract
抽象类不能被实例化
抽象类不一定要包含abstract方法。也就是说,抽象类可以没有abstract方法
一旦类包含了abstract方法,则这个类必须声明为abstract
abstract 只能修饰类和方法,不能修饰属性和其它的
抽象类可以有任意成员【抽象类本质还是类】,比如:非抽象方法、构造器、静态属性等等
抽象方法不能有主体,即不能实现
如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类。
抽象方法不能使用private、final 和 static来修饰,因为这些关键字都是和重写相违背的。(静态方法不能重写)
内部类的分类
定义在外部类的局部位置上(比如方法内):
局部内部类(有类名)
匿名内部类(没有类名,重点)
定义在外部类的成员位置上:
成员内部类(没有static修饰)
静态内部类(使用static修饰)
内部类存在的作用
内部类允许有 private 与protected权限。内部类作用是更小层次的封装,把一个类隐藏在另一个类的内部,只让它的外部类看得到它,能更方便地在内部类中访问外部类的私有成员。
由于内部类对外部类的所有内容都是可访问的,我们就可以考虑使用内部类来实现接口,可以避免接口和同一个类中两种同名方法的调用。 Java中的内部类与接口联合应用,更好地实现多重继承。