`
rockkyle
  • 浏览: 10385 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

final finally区别

    博客分类:
  • java
 
阅读更多

 

一 final, 修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能在子类中重载。

声明类:

final class duck
{
	public String name="kyle";
}
class Dahuangya extends duck //error:the Dahuangya can not subclass final calss duck
{
	
}

 声明变量:初始化,且只能读取,不能修改

class duck
{
	public final String name;//error writing
	public final String na="hello";//right writing
}

 

public class Finaltest
{
	public static void main(String[] argv)
	{
		duck du=new duck();
		/**
		du.na="kyle";//error writing
		*/
		System.out.println(du.na);
	}
}
class duck
{
	public final String na="hello";//right writing
}

 声明方法,

class duck
{
	protected String name;
	private String color;

	public duck(String name,String color)

	{
		this.name=name;
		this.color=color;
	}
	public final String getName()
	{
		return this.name;
	}
	public String getName(String s)
	{
		return this.name+s;
	}
}
class dahuangya extends duck
{

	public dahuangya(String name, String color) {
		super(name, color);
		// TODO Auto-generated constructor stub
	}
	/**
	public String getName() //error-writing
	{
		return this.name;
	}
	*/
	public String getName(String s)
	{
		return null;
	}
}

 因为在超类中方法声明了final 所以子类中不能重载

二:finally

再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。也就是说无论如何都会执行finally语句

try {
			Scanner in=new Scanner(new File("D:\\myfile.txt"));
			in.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}//双反斜杠,第一个为转义
		finally{
			System.out.println("hello world");
		}

 上面finally语句一定会执行


 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics