java基础—关键字
文章目录
- java基础—关键字
-
-
- 1.说说final关键字作用
- 2.说说static关键字
- 3.final和static的区别
-
- 相同
- 不同
- 4.final 和 static 修饰成员变量加载过程例子
- 5.抽象类是什么
- 6.为什么要有抽象类
- 7.抽象类如何定义
- 8.abstract关键字
- 9.interface关键字
- 10.abstract和interface区别
-
- 相同
- 不同
- 11.this和super关键字的作用
-
1.说说final关键字作用
final语义使最终的、不可改变的,可修饰类、方法、成员变量
- 修饰类:被final修饰的类不可被继承
- 修饰方法:被final修饰方法不能被重写
- 修饰成员变量:被final修饰的成员变量必须赋初始值,赋值后不能再重新赋值。
2.说说static关键字
static可以修饰内部类、方法、成员变量、代码块,表示静态或全局。 一旦使用了static关键字,那么这样的内容不再属于对象,而是属于类的,所以凡是本类的对象,都共享同一份。
- 修饰内部类:完全属于外部类本身,不属于外部类某一个对象,只可以访问外部类的静态变量和方法
- 修饰方法:可以通过对象名.方法名或类名.方法名访问,静态方法中不能直接访问非静态(静态加载优先于非静态)
- 修饰成员变量:变量属于整个类而不属于对象,多个对象会共享这个变量。
- 静态代码块:代码块在类被第一次加载时执行静态代码块,且只被执行一次,主要作用是实现 static 属性的初始化。
3.final和static的区别
相同
- 都可以修饰类、方法、成员变量
- 都不能修饰构造方法
不同
- static可以修饰代码块,final不可以
- sttaic不可以修饰方法内的局部变量,dinal可以。
- static修饰的属性只会被创建一次。修饰的代码块只会被执行一次。
- static修饰的方法中不能用this和supper(static修饰使类共享,不止属于对象)
4.final 和 static 修饰成员变量加载过程例子
public class TestStaticFinal {
public static void main(String[] args) {
StaticFinal sf1 = new StaticFinal();
StaticFinal sf2 = new StaticFinal();
System.out.println(sf1.fValue == sf2.fValue);//打印false
System.out.println(sf1.sValue == sf2.sValue);//打印true
}
}
class StaticFinal {
final int fValue = new Random().nextInt();
static int sValue = new Random().nextInt();
5.抽象类是什么
在面向对象的概念中,所有的对象都是通过类来描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
比如:要表示动物园中的动物,其中动物有多种多样孔雀、斑马等,它们是不同的,但是又都属于动物,所以动物就是孔雀、斑马的抽象类。
正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能实例化的。
6.为什么要有抽象类
- 用于类型隐藏: 我们可以构造一个固定的行为抽象描述,但这种行为描述却可以有任意个具体行为的实现方式,这个抽象描述就是抽象类。例如:动物就是一个抽象描述,动物有多种,可以是孔雀、可以使斑马。
- 用于扩展对象的行为功能: 一组任意个可能的具体实现则表现为所有可能的派生类(子类),就扩展了此模块的行为功能。例如银行充值功能(银行可以有多家),这个功能是抽象的,可以扩展实现为多家银行充值的功能。
7.抽象类如何定义
抽象类(abstract class)和接口(Interface)在Java语言中都是用来进行抽象类定义的两种主要方法
8.abstract关键字
可以修饰类和方法,表示抽象类和抽象方法,不能修饰属性和构造方法
- 修饰类:抽象类,需要被继承,是 单继承用的是关键字 extends。不能被实例化
- 修饰方法:抽象方法,需要子类重写。
9.interface关键字
- 接口(interface)是抽象方法和常量定义的集合,一个接口可以有多个实现类用implements
- 接口中的所有成员变量都是 默认 由public sttaic final修饰,不可更改
- 接口中的所有抽象方法都是 默认 由public acstract修饰
- 接口中没有构造器
- 接口采用多继承(实现)
10.abstract和interface区别
相同
- 都不能被实例化
不同
成员变量:方法:
- interface:不可有私有的,默认是public static final 型,且必须给其初值,实现类中不能重新定义,不能改变其值。
- abstract:可有私有的,其值可以在子类中重新定义,也可以重新赋值
实现:
- interface:不可以私有,默认被public abstrace修饰
- abstract:可以私有,方法可以不被abstrace修饰,但是必须由方法体。被abstract修饰的方法不能有方法体
- interface:一个类可以实现多个interface
- abstract:一种继承关系,一个类只能使用一次继承关系。可以通过继承多个接口实现多重继承
11.this和super关键字的作用
this
- 对象内部指代自身的引用
- 解决成员变量和局部变量同名问题
- 可以调用成员变量
- 不能调用局部变量
- 可以调用成员方法
- 在普通方法中可以省略 this
- 在静态方法当中不允许出现 this 关键字
super
- 代表对当前对象的直接父类对象的引用
- 可以调用父类的非 private 成员变量和方法
- super(); 可以调用父类的构造方法,只限构造方法中使用,且必须是第一条语句