Java――类的应用(一) (一)

2014-11-24 11:52:33 · 作者: · 浏览: 59

类的应用

1、final关键字的使用

final是Java中一个非常重要的关键字,它既可以修饰一个成员变量,也可以修饰一个成员方法,同时还可以修饰一个类。当一个成员变量被定义为final时,这个成员变量只能赋值一次;当一个成员方法被定义为final时,这个成员方法不能被重写;当一个类被定义为final时,这个类不能被继承。

1)、final常量的使用

在变量前加上final,则变量将成为一个常量。对于此常量赋值时只能赋值一次,而且可以不再它所声明的那一行上赋值,但在构造函数完成之前必须保证此变量有一个值。下面是一个实例:

[java]
class test03

{

int print()

{

final int a = 4;

return a;

}

}



public class test {

public static void main(String[] args)

{

test03 t3 = new test03();

System.out.println("a=" + t3.print());

}

}

class test03

{

int print()

{

final int a = 4;

return a;

}

}

public class test {

public static void main(String[] args)

{

test03 t3 = new test03();

System.out.println("a=" + t3.print());

}

}


一个类如果被定义成final,那么这个类只能被实例化一次,而且这个类中的方法参数也可以被定义成final;但如果定义成final,这个参数就只能赋值一次。下面是关于被定义为final的类的实例:

[java]
class test03

{

int a;

int print(int b)

{

return a + b;

}

}



public class test {

public static void main(String[] args)

{

final test03 t3 = new test03();

t3.a = 1;

System.out.println("a+b=" + t3.print(9));

t3 = new test03();

}

}

class test03

{

int a;

int print(int b)

{

return a + b;

}

}

public class test {

public static void main(String[] args)

{

final test03 t3 = new test03();

t3.a = 1;

System.out.println("a+b=" + t3.print(9));

t3 = new test03();

}

}


我们会看到程序在t3 = new test03()这一行报错。这是因为test03被赋值了两次。

一个变量如果被定义成final类型,它就只能被赋值一次。不过下面的程序中b被赋值了两次,所以在编译时会报错:

[java]
class test03 {

int print(final int b) {

b = 9;

return b;

}

}



public class test {

public static void main(String[] args)

{

test03 t3 = new test03();

System.out.println("b=" + t3.print(9));

}

}

class test03 {

int print(final int b) {

b = 9;

return b;

}

}

public class test {

public static void main(String[] args)

{

test03 t3 = new test03();

System.out.println("b=" + t3.print(9));

}

}


我们会看到程序在b=2这一行报错。

2)、最终方法

当一个成员方法被定义为final时,该成员方法将不能被重写。不能重写提供了安全保护,但是防止子类重写该方法也失去了面向对象的很多优点。下面是一个被定义为final的方法不能被重写的实例:

[java]
class test02 {

int a;

final void print() {

System.out.println("a=" + a);

}

}



class test03 extends test02{

int b;

void print() {

System.out.println("b=" + b);

}

}



public class test {

public static void main(String[] args) {

test03 t3 = new test03();

t3.b = 2;

t3.print();

}

}

class test02 {

int a;

final void print() {

System.out.println("a=" + a);

}

}

class test03 extends test02{

int b;

void print() {

System.out.println("b=" + b);

}

}

public class test {

public static void main(String[] args) {

test03 t3 = new test03();

t3.b = 2;

t3.print();

}

}


我们会看到程序在test03中的print()方法上报错

3)、最终类

当一个类被定义为final时,这个类将不能派生出子类。任何类都不能继承final类。只有当认为该类中的所有方法都不需要重写时,才将该类定义为final。下面是一个final类的定义:

[java]
final class test02 {

int a , b;

void print() {

System.out.println("a=" + a);

}

void print1() {

System.out.println("