java自学之路-----final 抽象类 接口

来源:互联网 发布:好看的网游小说知乎 编辑:程序博客网 时间:2024/05/16 17:48

final{

1.是一个关键字,修饰符
2.修饰类的时候,该类无法继承
3.修饰方法的时候,该方法无法被子类覆盖
4.修饰变量的时候,只能赋值一次并且要在定义的时候显示初始化,所以该变量为一个常量,通常用大写单词表示。如果要全局共享,可加static
}


抽象类{

1.一个方法只有声明,没有实现,就是一个抽象方法,用abstract修饰
2.有抽象方法的类必须为抽象类,抽象类可以没有抽象方法
3.抽象类不可以被实例化
4.子类继承抽象类的时候,必须覆盖抽象类的所有抽象方法,否则该子类也为抽象类不可被实例化

注意{
1.抽象类是有构造函数的,可以用来给子类对象初始化
2.抽象类不放抽象方法通常是为了不让该类创建对象
3.abstract不可与private共存,因为private修饰的方法不可以被覆盖
       不可与static共存,因为静态不需要创建对象就可以直接类名调用
  不可与final共存,因为final不允许类被继承,方法被覆盖
4.抽象类一定会作为父类被使用
}
}

接口{

注意{
1.接口中的方法必须是抽象类
2.接口用关键字interface定义,但编译后还是***.class文件
3.接口中的全局常量默认为public static final   ,可以直接用”接口名.常量名“调用,建议显示定义这些修饰符,便于调用
    抽象方法默认为public abstract   ,建议显示定义public修饰符,便于子类继承的时候,覆盖该接口方法時能加上public修饰符
4.类与类是继承关系,而且只能为单继承,以防多继承的时候造成调用方法不明确的情况
   类与接口是实现关系,可以实现多个接口,间接实现多继承的含义
   接口与接口是继承关系,可以出现一个接口继承多个接口
5.子类必须覆盖接口所有的方法,否则该子类就是抽象类
}

接口与抽象类的不同点{
接口包含  抽象方法  以及  全局常量,与实现该接口的类是 has  a 的关系
抽象类包含  抽象方法  非抽象方法 以及  成员变量,与继承该抽象类的类是is a的关系
}

优点{
1.对外部暴露了规则
2.为程序提升了扩展性
3.降低了耦合性

代码展示{
/*有一台笔记本,要使用鼠标,键盘,优盘等功能就必须提供一个USB的接口,这个接口就是包含了实现功能的规则,提升了扩展性,降低了笔记本与鼠标键盘优盘之间的耦合性*/interface Usb{//这个就是所暴露出来的规则public void start();public void finish();}class UsbMouse implements Usb{public void start(){System.out.println("UsbMouse is using");}public void finish(){System.out.println("UsbMouse is leaving");}}class UPan implements Usb{public void start(){System.out.println("UPan is using");}public void finish(){System.out.println("UPan is leaving");}}//如果一段时间之后想要再使用键盘的usb功能,只需实现接口,并覆盖方法,便可直接被电脑所使用。这就是降低了耦合性class BookPC{public static void main(String[] args){useUsb(new UsbMouse());//扩展性的展示useUsb(new UPan());}public static void useUsb(Usb u){//使用的规则u.start();u.finish();}}
}
}
}

有个地方不确定:接口应该是没有构造函数的,因为类是实现了接口,而不是继承,该类的默认构造函数中的super()应该是调用了object类的构造函数
0 0
原创粉丝点击