第四章抽象类和接口
4.2 final关键字的作用
final关键字的使用:
final用中文表示是最终的意思,final修饰的类不能被继承修饰的方法不能被重写,修饰的变量叫常量且定以后不能在!他地方改变值。
final修饰变量:
final修饰的变量必须赋值,且其他地方不允许在修改值,一般用于统一固定某个数据。
final常量的赋值:
全局的final属性虽然可以在其他地方赋值,但是常用的都是声明时直接赋值。
常量的命名规范:
一个属性一旦被修饰为常量,则常量名~般都为犬写字母。
final关键字的使用,大家要注意:
抽象类就是用来被继承然后实现抽象方法的,抽象类不能用FINAL来修饰,否则就相互矛盾。
4.3 接口的创建:
接口是什么:
接口就是定义的一组未实现方法,强制要求实现接口的子类完成这些方法,从而提高应用的灵活扩展性。
注意事项:
类实现了接口,那么必须重写接口中的所有方法,否则编译不通过。
提高扩展性:
将接口直接作为方法的参数声明,调用方法时传递的是实现了接口的子类对掾象,这些子类对象都具有接口中的方法实现,这一点实际上是多态的体现.
接口和抽象类的区别:
(1)接口中只能包含抽象方法,抽象类则完全可以包含普通方法。
(2)接口中不能定义静态方法,抽象类中可以定义静态方法。
(3)接口中只能定义静态常量,不能定义普通变量或静态的常量,抽象类中则可以定义不同的属性,也可以定义静态的属性。
(4)接口中不包含构造方法,抽象类中可以包含。
(5)一个类最多只能有一个直接父类,包括抽象类,而一个类可以实现多个接口。
4.4 接口的实例理解:
package 人生如戏;
public interface paizhao {
void paizhao();
}
package 人生如戏;
public interface sj {
int jiage = 1800;
void sj();
}
package 人生如戏;
public class sjTest implements paizhao,sj{
public void sj() {
System.out.println("我是手机,我的拍照功能并不好");
}
public void paizhao() {
System.out.println("我的价格为:"+this.jiage);
}
}
package 人生如戏;
public interface sxt {
int jiage = 200;
void sxt();
}
package 人生如戏;
public interface smxj {
int jiage = 4000;
void smxj();
}
package 人生如戏;
public class smxjTest implements smxj,paizhao{
public void paizhao() {
System.out.println("我是数码相机,我拍照很清晰");
}
public void smxj(){
System.out.println("我的价格为:"+this.jiage);
}
}
package 人生如戏;
public class sxtTest implements paizhao,sxt{
public void paizhao() {
System.out.println("我是摄像头,拍照功能也还不错");
}
public void sxt() {
System.out.println("我的价格为:"+this.jiage);
}
}
package 人生如戏;
public class Test {
public static void Test(sjTest s){
s.paizhao();
s.sj();
}
public static void main(String[] args) {
smxjTest smxj = new smxjTest();
sxtTest sxt = new sxtTest();
sjTest sj = new sjTest();
Test.Test(sj);
}
}
注意:接口的使用顺序。