《明解Java》笔记:Java基础篇_抽象_接口
#------>Java基础篇_抽象_接口
本来这篇文章很早就该发的,只不过最近迷上打电动了!!!O(∩_∩)O哈哈~
#涉及关键字
#判断 instanceof #定义抽象 abstract #定义接口 interface #实现接口 implements
抽象:在父类实例化没意义的情况下可以将类定义为抽象类(在抽象类中可以存在普通方法)
抽象类的定义:
abstract class 类名{ 成员变量 方法(){方法体} #普通方法 abstract 方法(); #抽象方法(抽象方法是不允许有方法体的连"{}"也不允许) }
特点:
1.抽象类是不允许被直接实例化的(可以由父类指向子类对象)来完成实例化
2.抽象方法只能声明,不能有实现 #abstract 方法();
好处:
1.封装子类重复的内容
2.将父类设计成抽象类后,即可借由父子继承关系限制子类设计的随意性
注意:
1.含有抽象方法的类,则这个本身一定是抽象类(在抽象类中可以包含抽象方法和普通方法)
2.抽象类不一定包含抽象方法(但抽象方法必须声明在抽象类中!!!)
3.抽象类不能被实例化,不包含抽象方法这个类也不允许被实例化!!!
4.一个类继承抽象类后,它的子类必须重写父类中所有的抽象方法,否则子类也将变成抽象类
5.被abstract修饰的方法不能用static、private
再用abstract修饰类时不可final同时出现 #鱼和熊掌不可兼得嘛!!!
被abstract修饰的类如果不被子类继承的话,那么定义为抽象类毫无意义!!!
#-------->接口
接口被赋予为抽象方法的集合
#接口的定义
public interface 接口名{ public static final 常量; # public abstract 方法(); # }
#接口中抽象方法可以不写abstract关键字
#访问修饰符默认public
#当类实现接口是,需要去实现接口中的所有方法,否则这个类也将变成抽象类
#接口中可以包含常量,默认public static final
接口也可以实现继承,并且可以继承多个父类接口
#接口的实现
class 类名 implements 接口{ #可以同时实现多个接口,java不存在多重继承, #一个类只能继承一个类,但是能实现多个接口 方法体;
}
注意:
1、Java接口中的成员变量默认都是public,static,final类型的(都可省略),必须被显示初始化,即接口中的成员变量为常量(大写,单词之间用”_”分隔)
2、Java接口中的方法默认都是public,abstract类型的(都可省略),没有方法体,不能被实例化
3、Java接口中只能包含public,static,final类型的成员变量和public,abstract类型的成员方法
4、接口中没有构造方法,不能被实例化
5、一个接口不能实现(implements)另一个接口,但它可以继承多个其它的接口
6、Java接口必须通过类来实现它的抽象方法
7、当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象类
8、不允许创建接口的实例(实例化),但允许定义接口类型的引用变量,该引用变量引用实现了这个接口的类的实例
9、一个类只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承.