最终类和抽象类
来自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中存在一种类专门用来当作父类的类,这种类类似“模版”,其目的是要设计者依据它的格式来修改并创建新的类。但是并不能直接由抽象类创建对象,只能通过抽象类派生出新的类来创建对象。即不能生成实例化对象的类称之为抽象类。抽象类是创建一个体现某些基本行为的类,该类可以声明抽象方法,抽象方法没有方法体,只能通过继承在子类中实现该方法。抽象类的作用实际上是一种经过优化了的组织方式,这种组织方式使得所有的类层次分明,简洁精练。抽象类定义规则如下:
- 抽象类和抽象方法都必须用abstract关键字来修饰。
- 抽象类不能被实例化,也就是不能用new关键字去产生对象。
- 抽象方法只需声明,而不需实现。
- 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须复写所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。
【实例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程序设计