最终类和抽象类

来自CloudWiki
跳转至: 导航搜索

最终类

Java中的final关键字可以用来修饰类、方法和局部变量,修饰过的类叫做最终类,此类不能被继承。修饰过的方法叫做最终方法,此方法不能被子类复写。修饰过的变量实际上相当于常量,此变量(成员变量或局部变量)只能赋值一次。

【实例5-8】最终类错误示例程序设计。

public class TestFinal {
	  public static final int TOTAL_NUMBER = 5;
	  public int id;
	  public TestFinal() {
	    	id = ++TOTAL_NUMBER;
	  	// 非法,对final变量TOTAL_NUMBER进行二次赋值了。
	  }	
public static void main(String[] args) {
		final TestFinal t = new TestFinal();
		final int i = 10;
		final int j;
		j = 20;
		j = 30; // 非法,对final变量进行二次赋值
	  }
}

抽象类

Java中存在一种类专门用来当作父类的类,这种类类似“模版”,其目的是要设计者依据它的格式来修改并创建新的类。但是并不能直接由抽象类创建对象,只能通过抽象类派生出新的类来创建对象。即不能生成实例化对象的类称之为抽象类。抽象类是创建一个体现某些基本行为的类,该类可以声明抽象方法,抽象方法没有方法体,只能通过继承在子类中实现该方法。抽象类的作用实际上是一种经过优化了的组织方式,这种组织方式使得所有的类层次分明,简洁精练。抽象类定义规则如下:

  1. 抽象类和抽象方法都必须用abstract关键字来修饰。
  2. 抽象类不能被实例化,也就是不能用new关键字去产生对象。
  3. 抽象方法只需声明,而不需实现。
  4. 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须复写所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。

【实例5-9】抽象类程序设计。

abstract class Person {
	String name;
	int age;
	String occupation;
	public abstract String talk();// 声明一抽象方法,无方法体
}
class Student extends Person {
	// 省略构造方法
	// 复写talk()方法
	public String talk() {
	  return "姓名:"+this.name+",年龄:"+this.age+",职业:"+this.occupation+"!";}
}
public class Main {
public static void main(String[] args) {
Student s = new Student("张三", 20, "学生");
System.out.println(s.talk());
}
}

返回 Java程序设计