Java——类的应用(一)
类的应用
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;
补充:软件开发 , Java ,