JAVASE(5)

final关键字

final关键字修饰类体现在该类不能被继承
final关键字修饰成员方法体现在该方法不能被重写
final修饰到的成员变量必须被初始化且不能改变值
(初始化三种方式:显式初始化、构造块中初始化、构造方法体中初始化)

常量

通常使用public static final关键字共同修饰成员变量来表达常量的含义,常量的命名规范要求所有字母都要大写,不同的单词之间采用下划线连接

多态

主要指同一种事物表现出来的多种形态
饮料:可乐、雪碧、芬达、脉动...
人:学生、教师、工人、保安....

多态的语法规则
父类类型  引用变量名 = new 子类类型()

多态的特点:

当父类类型的引用指向子类类型的对象时,父类类型的引用可以直接调用父类独有的方法
当父类类型的引用指向子类类型的对象时,父类类型的引用不可以直接调用子类独有的方法
对于父子类都有的非静态方法来说,编译阶段调用父类版本,运行阶段调用子类版本(动态绑定)
对于父子类都有的静态方法来说,编译阶段和运行阶段都调用父类版本

严格来说,静态方法不能被重写

引⽤数据类型之间的转换

  • 引⽤数据类型之间的转换式有两种:⾃动类型转换 和 强制类型转换。

  • ⾃动类型转换主要指⼩类型向⼤类型的转换,也就是⼦类转为⽗类,也叫做向上转型。

  • 强制类型转换主要指⼤类型向⼩类型的转换,也就是⽗类转为⼦类,也叫做向下转型或显式类型转换。

  • 引⽤数据类型之间的转换必须发⽣在⽗⼦类之间,否则编译报错。

  • 若强转的⽬标类型并不是该引⽤真正指向的数据类型时则编译通过,运⾏阶段发⽣类型转换异常。

  • 为了避免上述错误的发⽣,应该在强转之前进⾏判断,格式如下:
    if (引⽤变量 instanceof 数据类型) 判断引⽤变量指向的对象是否为后⾯的数据型。

抽象类

抽象类主要指不能具体实例化的类并且使用abstract关键字修饰,也就是不能创建对象

抽象方法

抽象方法指不能具体实现的方法并且使用abstract关键字修饰,也就是没有方法体
访问修饰符  abstract  返回值类型  方法名(形参列表);

抽象类中可以有成员变量、构造⽅法、成员⽅法。

抽象类中可以没有抽象⽅法,也可以有抽象⽅法。

有抽象⽅法的类必须是抽象类,因此真正意义上的抽象类应该具有抽象⽅法且使⽤abstract关键字修饰。

抽象类的实际意义

抽象类的实际意义不在于创建对象⽽在于被继承。

当⼀个类继承抽象类后必须重写抽象⽅法,否则该类也变成抽象类,也就是抽象类对⼦类具有强制性和规范性,因此叫做模板设计模式。

面试考点:

static关键字能不能和abstract关键字共同修饰一个方法?不能
static是修饰的方法是通过类名.的方式调用,但是abstract不能实例化对象

final关键字能不能和abstract关键字共同修饰一个方法?不能
final修饰的方法不能被重写,但是抽象方法就等着被子类重写

native关键字能不能和abstract关键字共同修饰一个方法?不能
native修饰的方法代表该方法已经被实现

private关键字能不能和abstract关键字共同修饰一个方法?不能
private修饰的方法是不能被继承的

接口

接口中只能有常量,不能有成员变量
接口中只能有抽象方法

定义类的关键字是class,而定义接口的关键字是interface

接口与接口之间是继承,当某一个类实现了子接口,它父类接口中的抽象方法也是需要重写的

类和接口之间的关系

抽象类和接⼝的主要区别(笔试题)

  •   定义抽象类的关键字是abstract class,⽽定义接⼝的关键字是interface。  

  • 继承抽象类的关键字是extends,⽽实现接⼝的关键字是implements。

  • 继承抽象类⽀持单继承,⽽实现接⼝⽀持多实现。

  • 抽象类中可以有构造⽅法,⽽接⼝中不可以有构造⽅法。

  • 抽象类中可以有成员变量,⽽接⼝中只可以有常量。

  • 抽象类中可以有成员⽅法,⽽接⼝中只可以有抽象⽅法Java8以前的版本)。

  • 抽象类中增加⽅法时⼦类可以不⽤重写,⽽接⼝中增加⽅法时实现类需要重写(Java8以前的版本)。

  • 从Java8开始增加新特性,接⼝中允许出现⾮抽象⽅法和静态⽅法,但⾮抽象⽅法要使⽤default关键字修饰。

  • 从Java9开始增加新特性,接⼝中允许出现私有⽅法(private),可以实现多个默认方法的共性提取(有重复代码就可以提取出来一个方法)。   

内部类

当⼀个类的定义出现在另外⼀个类的类体中时,那么这个类叫做内部类 (Inner),⽽这个内部类所在的类叫做外部类(Outer

final修饰的类不能被继承,修饰的方法不能被重写

访问内部类中的方法:
先new外部类对象,外部类.new 内部类()

如果内部类访问外部类中与本类内部同名的成员变量或⽅法时,需要使⽤this关键字

如果静态内部类访问外部类中与本类内同名的成员变量或⽅法时,需要使⽤类名.的⽅式访问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值