JAVA学习笔记7(final和抽象)


final修饰符

final是一个关键字,小写,用来修饰 类、方法、变量、引用。

关于final的特征:

1.1final修饰的类无法继承。
1.2final修饰的方法无法覆盖。
1.3final修饰的变量只能赋一次值。
1.4final修饰的引用一旦指向某个对象,则不能再重新指向其它对象,但该引用指向的对象内部的数据是可以修改的。
1.5final修饰的实例变量必须手动初始化,不能采用系统默认值。
1.6final修饰的实例变量一般和static联合使用,称为常量。
例如:public static final double PI = 3.1415926;

总之,final的修饰意思为:初始化后无法再去改变。


抽象类abstract

每个对象(实例),将他们的共同特点抽象出来是一个大类。
而每个类如果又有共同特征呢?把他们抽象出来,便是一个抽象类。
如下图所画:
图源动力节点教程
首先来说抽象类的定义方法:
abstract

[修饰符列表] abstract class 类名{
	类体
}

关于抽象 abstract 值得注意的是:

  • 抽象类是由类抽象而来,然而类本来是不存在的,所以抽象类无法创建对象。例如下面这个:
public abstract class Account{	
}
创建了一个抽象类,那么我们就无法去使用
new Account();//错误: Account是抽象的; 无法实例化
去创建对象。
  • 抽象类也属于引用数据类型。

  • 正因为抽象类是无法被实例化的,所以抽象类生来就是要被继承的。“生被继承,我很惭愧”

  • final和abstract不能联合使用,这两个关键字是对立的。(为什么?前面我们提到:final修饰的类无法继承 ,然而abstract修饰的抽象类是要天生就被继承的,所以他们是矛盾,对立的。)

  • 抽象类的子类可以是抽象类。也可以是非抽象类。(抽!我疯狂地抽!)

  • 抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法是供子类使用的。(通过前面讲的super去调用父类的构造方法)


抽象方法

抽象类中可以有抽象方法,抽象方法表示没有实现的方法,没有方法体的方法。如下:

public abstract void doSome();
抽象方法特点是:
	特点1:没有方法体,以分号结尾。
	特点2:前面修饰符列表中有abstract关键字。

关于抽象方法,注意!抽象类中不一定有抽象方法,抽象方法必须出现在抽象类中。
正因为这个注意点,结合到继承的特点(子类继承父类的方法)我们不难想到,在子类之中,必须对抽象方法进行覆盖/重写/实现!


面向抽象编程

别看我,我也没搞明白·······
大概是通过抽象类和多态去写程序?
(咋不用抽象话呢····迫真–面向抽象编程)


小tip

面试题(判断题):java语言中凡是没有方法体的方法都是抽象方法。
		不对,错误的。
		Object类中就有很多方法都没有方法体,都是以“;”结尾的,但他们都不是抽象方法,例如:
		public native int hashCode();
		这个方法底层调用了C++写的动态链接库程序。
		前面修饰符列表中没有:abstract。有一个native。表示调用JVM本地程序。

看不懂,不要问,学废了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值