简述static,final,abstract三者的使用场景与注意事项
2017-03-14 22:14
253 查看
static用于修饰成员变量和成员函数,想要实现对象中的共性数据的对象共享,可以将这个数据进行静态修饰,被静态修饰的成员可以直接被类名调用,静态随着类的加载而加载,而且优先于对象存在。静态方法只能访问静态成员(静态方法和静态变量),不可以访问非静态成员,这是因为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员。静态方法中不能使用this和super关键字,因为this代表本类对象,super代表父类对象,而静态时,有可能没有对象存在,所以this和super无法使用。
final关键字可以修饰类,方法,变量(成员变量内,局部变量,静态变量),被final修饰的类是一个最终类,不可以被继承,被final修饰的方法是一个最终方法,不可以被覆盖,但是可以被继承。被final修饰的变量只能是一个常量,只能赋值一次。内部类被定义在类中的局部位置上时,只能访问局部被final修饰的局部变量。
抽象方法只能定义在抽象类中,抽象方法和抽象类必须由abstract修饰,abstract关键字只能描述类和方法,不能描述变量。抽象方法只定义方法声明,不定义方法实现。抽象类不可以被实例化(创建对象),只有通过子类继承抽象类并覆盖抽象类中的所有抽象方法后,该子类才可以被实例化,否则该子类还是一个抽象类。抽象类中有构造函数用于给子类对象进行初始化,同时抽象类中可以含有非抽象方法。abstract关键字不可以与final,private,static关键字共存,因为被final修饰的方法不可以被重写,意味着子类不可以重写该方法,如果abstract和final共同修饰父类中的方法,子类要实现抽象方法(abstract的作用),而final又不让该方法重写,这相互矛盾。如果private和abstract共同修饰父类中的方法,private修饰则该方法不可以被子类访问,但是abstract修饰需要子类去实现,两者产生矛盾。如果static和abstract共同修饰父类中的方法,static表示是静态的方法,随着类的加载而加载,则该方法不需要在子类中去实现,这与abstract关键字矛盾。
final关键字可以修饰类,方法,变量(成员变量内,局部变量,静态变量),被final修饰的类是一个最终类,不可以被继承,被final修饰的方法是一个最终方法,不可以被覆盖,但是可以被继承。被final修饰的变量只能是一个常量,只能赋值一次。内部类被定义在类中的局部位置上时,只能访问局部被final修饰的局部变量。
抽象方法只能定义在抽象类中,抽象方法和抽象类必须由abstract修饰,abstract关键字只能描述类和方法,不能描述变量。抽象方法只定义方法声明,不定义方法实现。抽象类不可以被实例化(创建对象),只有通过子类继承抽象类并覆盖抽象类中的所有抽象方法后,该子类才可以被实例化,否则该子类还是一个抽象类。抽象类中有构造函数用于给子类对象进行初始化,同时抽象类中可以含有非抽象方法。abstract关键字不可以与final,private,static关键字共存,因为被final修饰的方法不可以被重写,意味着子类不可以重写该方法,如果abstract和final共同修饰父类中的方法,子类要实现抽象方法(abstract的作用),而final又不让该方法重写,这相互矛盾。如果private和abstract共同修饰父类中的方法,private修饰则该方法不可以被子类访问,但是abstract修饰需要子类去实现,两者产生矛盾。如果static和abstract共同修饰父类中的方法,static表示是静态的方法,随着类的加载而加载,则该方法不需要在子类中去实现,这与abstract关键字矛盾。
相关文章推荐
- iOS Static Library使用注意事项(category无法使用等)
- android:PopupWindow的使用场景和注意事项
- Blockd的使用(定义,作用,typedef,使用场景,注意事项)
- ReentrantLock使用场景以及注意事项
- android 使用static 变量注意事项
- static关键字:解决的问题,在内存中的特点和使用注意事项
- 黑马程序员-C语言中static、extern、typedef、enum使用的注意事项
- tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项
- Ansj标准分词使用注意事项(MyStaticValue.isRealName属性)
- Tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项
- static关键字使用注意事项
- 使用索引的注意事项及常见场景、案例
- tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项
- UGUI中带参数事件的使用,itween动画注意事项以及切换场景
- java 中关键字 static的使用及注意事项
- static 关键字 成员变量和静态变量的区别 静态使用的注意事项 静态代码块 构造代码块
- tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项
- tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项
- java中Static&Final的使用方法,&&&Java中两个主要的抽象Abstract&&Implement
- .NET rabbitmq 使用场景 及注意事项