final关键字和抽象类的个人理解及总结

来源:互联网 发布:怎么成为淘宝服务商 编辑:程序博客网 时间:2024/06/06 20:08


首先就是我关于final关键字的一些理解。

final作为一个修饰符,那么它有什么什么特点呢?

1.可以修饰类,函数,变量。

2.被final修饰的类不可以被继承。通常为了避免被继承,被子类复写功能而使用。

3.被final修饰的方法不可以被复写。

4.被final修饰的变量是一个常量只能赋值一次,既可以修饰成员变量,又可以修饰局部变量。

5.内部类只能访问被final修饰的局部变量。


当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起个名字,方便于阅读。

而这些值不需要改变,所以加上final修饰。被final修饰的常量的书写要求所有的字母都大写,如果由多个单词组

成,则单词通过 _ 连接,例如:

public static final double MY_PI=3.14;

关于final目前就说这么多把,毕竟自己学的不是太深入,以后会做一些延伸和拓展。那么再来说下关于抽象类的

相关知识。


当多个类中出现相同功能,但是功能主体不同。这时可以进行向上抽取,这时,只抽取功能定义,而不抽取功能

主体。那么抽象类有那些特点呢?

1.抽象方法一定定义在抽象类中。

2.抽象方法和抽象类都必须被abstract关键字修饰。

3.抽象类不可以用new创建对象,因为调用抽象方法没有意义。

4.抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后建立子类对象调用。如果子类只覆盖了部

分抽象方法,那么该子类还是一个抽象类。


那么在什么情况下才需要定义抽象类呢?

在描述事物的过程中,该如何描述事物就如何描述事物,只不过该事物中出现了一些未知的部分。这些不确定的

部分,也是该事物的功能,需要明确出来,但是无法定义主体。(abstract void study();不要大括号)这种情况下一般就

要通过抽象方法来表示。

抽象类比一般类多了抽象函数。也就是在类中可以定义抽象方法。并且抽象类不可以实例化。

特殊情况下,抽象类中可以不定义抽象方法,但是这样做仅仅是为了不让该类建立对象。


下面上一道关于抽象类的小练习。很简单,只是为了熟悉下抽象类的相关操作。


package Test;/** * 假如我们在开发一个系统时,需要对员工进行建模,员工包含3个属性: * 姓名,工号以及工资。经理也是员工,除了含有员工的属性外,另外还 * 有一个奖金属性。请使用继承的思想设计出员工类和经理类,要求类中 * 提供必要的方法进行属性访问。 * @author 淼淇 * */abstract class Employee{private String name;private String id;private double pay;Employee(String name, String id, double pay){this.name = name;this.id = id;this.pay = pay;}public abstract void work();//定义抽象方法,让子类去实现(复写),因为不确定其他调用的子类如何工作}class Manager extends Employee{private int bonus;Manager(String name, String id, double pay, int bonus){super(name, id, pay);this.bonus = bonus;}public void work(){System.out.println("Manager Work");}}public class Test013 {public static void main(String[] args) {// TODO Auto-generated method stubManager ma = new Manager("zhangsan", "0915026105", 6000, 2000);ma.work();}}

关于对抽象类和final关键字的总结,暂时告一段落。到目前已经学了2个可以修饰类的关键字,一个是public,一

个是final。现在对学习的兴趣越来越浓厚了,坚持,努力,加油!~


0 0
原创粉丝点击