抽象类
类:属性(0或多个)+方法(0或多个)
类可以没有方法,但是有方法就肯定要有实现,这才是一个完整的类。一个完整的类才可以被实例化,被new出来,如果一个类暂时有方法未实现,需要被定义为抽象类
抽象类关键字abstract声明:抽象类的语法: abstract class 类名{…… }
抽象类由成员变量、具体方法、抽象方法组成;抽象方法加abstract关键字,语法:abstract 返回值类型 方法名称 (参数列表);
抽象类也是类。一个类继承于抽象类,就不能继承于其他的(抽象)类。子类可以继承于抽象类,但是一定要实现父类们所有abstract的方法。如果不能完全实现,那么子类也必须被定义为抽象类。
注意:
1.抽象类不能被实例化
2.构造方法和static方法不能是抽象的
3.父类的抽象方法往往在子类中实现
接口
接口(interface)是抽象方法和常量值定义的集合。
特点:接口中的所有成员变量都默认是由public static final修饰的。接口中的所有抽象方法都默认是由public abstract修饰的。
如果类的所有方法都没有实现,那么这个类就算是接口interface。接口不算类,或者说是“特殊”的类。类只可以继承(extends)一个类,但是可以实现(implements)多个接口,继承和实现可以同时。接口可以继承(多个)接口,没有实现的方法将会叠加。类实现接口,就必须实现所有未实现的方法。如果没有全部实现,那么只能成为一个抽象类。
内部类
1、由于内部类提供了更好的封装特性,并且可以很方便的访问外部类的属性。所以,在只为外部类提供服务的情况下可以优先考虑使用内部类。
2、使用内部类间接实现多继承:每个内部类都能独立地继承一个类或者实现某些接口,所以无论外部类是否已经继承了某个类或者实现了某些接口,对于内部类没有任何影响。
String类需熟练应用string类里面方法。