1.被abstract修饰的方法为抽象方法,抽象方法没有方法体
2.若一个类中有抽象方法,那么这个类必须声明为抽象类
3.若抽象类作为父类被继承,那么继承他的子类有两种解决方案:
作为抽象子类,不实现或实现部分抽象父类的抽象方法
普通子类,实现父类的全部抽象方法
4.抽象类不能实例化
5.抽象类是有构造函数的,但不是为了自己用,而是为了子类super()调用
6.抽象类可以定义成员变量/成员常量
7.抽象类可以定义全普/全抽/半普半抽
8.如果一个类不想被外界实例化,可以把这个类声明为抽象类
1.被关键字abstract修饰的方法为抽象方法
抽象方法没有方法体{},直接以分号结束
1.接口使用interface来定义
2.implements关键字用来建立接口与实现类之间的关系
3.接口实现欸类如果不实现或实现部分接口中的抽象方法,那么这个实现类是个抽象类,若实现了继承接口中的所有抽象方法,则为普通类
4.抽象类与接口都不能实例化/创建对象
5.接口没有构造函数 实现类super()使用的是父类的无参构造,若没有指定父类,super()代表的为object的无参构造
6.接口中都是静态常量,没有成员变量,因为会默认拼接public abstarct final
7.接口中都是抽象方法,默认拼接public abstract,所以,静态常量与抽象方法默认拼接的部分可省略不写
8.接口不是类
9.接口一般用来定义规则(有哪些功能?方法是否有参数,是否有返回值)方法具体实现交给接口的实现类来完成
继承关系,只支持单继承
实现关系,可以单实现也可以多实现,多实现接口名之间逗号隔开
继承关系,可以单继承也可以多继承,若一个接口继承了其他的接口那么此接口的实现类拥有所有接口的功能,需全部重写所有接口的抽象方法,否则为抽象类
1.接口有interface定义,抽象类用abstract修饰用class定义
2.接口中的方法都是抽象方法还有默认方法和静态方法,抽象类中的方法不做限制
3.接口中都是静态常量,抽象方法中普通成员变量
4.接口没有构造方法,不能实例化,抽象类有构造方法,也不能实例化
5.接口是先天设计的接口,是用来定义规则的,抽象是后天重构的结果
6.接口可以多继承,抽象类只能单继承
1.内部类创建对象的格式:
外部类名.内部类名 对象名=外部类对象.内部类对象
2.根据内部类的位置不同,分为成员内部类(类里方法外)局部内部类(方法里)
3.内部类可以直接使用外部类的资源,外部类使用内部类的资源时需要先创建内部类对象,在进行调用
4.成员内部类被private修饰后,需要在外部类创建公共方法,间接访问内部类资源
5.静态内部类不需要先外部类对象,而是先通过外部类的类名找到内部类,再创建内部类的对象
6.如果静态内部类有静态资源可不创建对象,就通过外部类名.内部类名.静态资源名的链式加载方式使用资源
7.直接创建外部类对象,调用局部内部类所处的方法时,并不会触发内部类的功能,需要在内部类所处的方法中,创建内部类对象,并调用其功能,功能才会被触发
8.匿名内部类没有名字,通常与匿名对象结合在一起使用
9.如果想多次使用实现后的功能,还是要创建之前的普通对象,匿名对象只能使用一次,一次只能调用一个功能,匿名内部类其实就是充当了实现类的功能,去实现未实现的方法,只是没有名字而已