一、接口中的所有方法默认都是public abstact修饰的,所以不需要在前面加public abstact。
二、abstract类不能实例化,必须被非抽象类继承才能使用,这也是抽象类被设计出来的主要作用。
但是抽象类和接口都可以被声明,其声明的对象可以指向继承了它们的子类。(注意匿名内部类的使用)
三、抽象类中可不可以定义静态(static)方法?
答:可以。抽象类中可以定义静态方法,只是抽象类自己不能实例化,所以这个静态方法实际是帮自己的子类(实现类)定义的。但是抽象类中不能有”静态抽象“方法,因为根本就没有“静态抽象方法”这种东西存在,因为它是无意义的。
四、“静态抽象”是不存在的,因为两者在功能上相互矛盾,设计者也不会允许它们同时存在。
五、静态与非静态的区别
这里的静态,指以static关键字修饰的,包括类,方法,块,字段。
非静态,指没有用static 修饰的。
静态有一些特点:
1.全局唯一,任何一次的修改都是全局性的影响
2.只加载一次,优先于非静态
3.使用方式上不依赖于实例对象。
4.生命周期属于类级别,从JVM 加载开始到JVM卸载结束。
可参考 :http://blog.csdn.net/zhandoushi1982/article/details/8453522/。
关于静态内部类(嵌套类)和非静态内部类的区别,可参考:
http://www.jb51.net/article/74838.htm
(1)内部静态类不需要有指向外部类的引用。但非静态内部类需要持有对外部类的引用。
(2)非静态内部类能够访问外部类的静态和非静态成员。静态类不能访问外部类的非静态成员。他只能访问外部类的静态成员。
(3)一个非静态内部类不能脱离外部类实体被创建,一个非静态内部类可以访问外部类的数据和方法,因为他就在外部类里面。