final关键字和Annotation注解
final关键字
在java程序里面final也被称为终结器,可以使用final来定义类、方法、常量,下面我们对功能进行说明
final 修饰的类不能被继承
范例 final定义的类不能有子类,观察错误的继承关系
final class Book {
}
class MathBook extends Book {
}
public class YootkDemo {
public static void main ( String arge[ ] ) {
MathBook book= new MathBook ( ) ;
}
}
此时的编译就会直接出现错误,直接说明Book类无法被继承,所以final所修饰的类是无法被继承的
final修饰的方法不能被覆写
class Book {
public final void getInfo ( ) {
}
}
class MathBook extends Book {
public void getInfo ( ) {
}
}
public class YootkDemo {
public static void main ( String arge[ ] ) {
MathBook book= new MathBook ( ) ;
}
}
使用这种机制可以保证父类中的一些特殊的方法不能被子类轻易改写,这样可以保证整个程序的执行安全。
final定义的变量为常量,不能被修改
class Book {
private final String MESSAGE= "百度一下" ;
public void print ( ) {
MESSAGE= "www.baidu.com" ;
}
}
public class YootkDemo {
public static void main ( String arge[ ] ) {
}
}
使用final定义的常量是不能被修改的,一旦修改就会出现错误,并且常量的命名规范,全部都用大写字母来进行命名。
Annotation 注解
Annotation注解是JDK1.5之后提供的重用的开发继续,它是一种将配置信息和写进程序中,并利用一些技术手段区分程序和配置信息的内容
准确的覆写
当一个子类继承父类的时候,子类继承的父类中的方法,如果我们需要对父类中的方法进行覆写,但意外写错的时候,我们只有在程序执行的时候才能发现
class Book {
public String getInfo ( ) {
return "【Book】这是一个普通的图书" ;
}
}
class MathBook extends Book {
public String getinfo ( ) {
return "【MathBook】这是一个数学计算类图书" ;
}
}
public class YootkDemo {
public static void main ( String arge[ ] ) {
MathBook book= new MathBook ( ) ;
System. out. println ( book. getInfo ( ) ) ;
}
}
这个时候可以看到,由于我们在覆写的时候,写错了方法名称,所以此时调用的是父类中的方法,并没有将方法进行覆写,这种时候就可以使用我们的Annotation注解来进行表示 范例 完成准确的覆写
class Book {
public String getInfo ( ) {
return "【Book】这是一个普通的图书" ;
}
}
class MathBook extends Book {
@Override
public String getinfo ( ) {
return "【MathBook】这是一个数学计算类图书" ;
}
}
public class YootkDemo {
public static void main ( String arge[ ] ) {
MathBook book= new MathBook ( ) ;
System. out. println ( book. getInfo ( ) ) ;
}
}
这个时候当我们覆写错误的时候,程序在编译的过程就会直接出现错误,并且这个注解也可以帮我们很好的分辨出哪些是覆写过的方法
过期声明
在我们正常的程序开发中,我们的软件项目不是一次性完成的,它会分为很多期的开发,时间上会拉的很长,所以有一些类中的方法会出现替换的概率,这个时候,又不能直接删除此方法,因前期开发的程序还在使用,但后期的程序开发又不再需要使用,这个时候,就可以添加一个过期声明,提醒后方,该方法一过期,请使用替代的方法。
class Book {
public String getInfo ( ) {
return "【Book】这是一个普通的图书" ;
}
}
class MathBook extends Book {
@Deprecated
public String getInfo ( ) {
return "【MathBook】这是一个数学计算类图书" ;
}
}
public class YootkDemo {
public static void main ( String arge[ ] ) {
MathBook book= new MathBook ( ) ;
System. out. println ( book. getInfo ( ) ) ;
}
}
通过上面的程序可以知道,我们可以知道,使用了过期声明后,程序在编译的时候,会出现过期的警告,但是程序还是可以正常的执行的