Java super、final关键字
发布日期:2022-02-24 01:06:56 浏览次数:2 分类:技术文章

本文共 1427 字,大约阅读时间需要 4 分钟。

继承

单继承
class 类名 extends 父类
父类中的属性子类都有,只是有的不能被访问

子类构造方法是无参的,不用写super();系统默认调父类无参

子类构造方法是有参的,要调用父类无参就必须写super()

类的加载

1.什么是类的加载 load (Node类的加载)
从硬盘中找到Node.class文件,解析该内容,生成Node类,把Node类的信息存放到内存的方法区,
直接和CPU打交道的是内存,数据都要在内存中,从硬盘上把文件提取到内存上,
2.什么情况下触发类的加载,并且该类不在内存中
1)按需加载(懒加载过程)
1.实例化该类的一个对象 new Node(1);
2.使用该类的静态属性或静态方法 ;
3.要用子类,必须要有父类,要加载父类
3其他规则
静态属性初始化顺序:
按照代码的书写顺序,执行
1.静态属性定义时的初始化
2.静态代码块(静态初始化器)

对象的构造/实例化 new Node

规则:

1.优先初始化父类的属性
2.按照下面的顺序执行初始化
1.按照代码书写顺序,执行定义时和构造代码块
2.再去执行构造方法
1.定义时初始化
2.构造代码块初始化
3.构造方法初始化

abstract关键字有什么作用?

1.修饰类,该类是抽象类无法被实例化的类,等着被继承的类
abstract class A {} //new A();是错的
2.修饰方法,该方法是抽象方法,没有被实现的方法
abstract void method();
包含抽象方法的类一定是抽象类
抽象类不一定包含抽象方法

final关键字有什么作用?

1.修饰变量,该变量的值只能被初始化一次,无法再修改
2.修饰类,该类无法被继承
3.修饰方法,该方法无法被覆写

final类中可以有abstract方法吗?

两者是对立的,final不能被继承abstract类必须要被继承,若不被继承,它本身又不能实例化,没啥用
final类与final没啥关系,完全独立

重载Overload和覆写Override(重写)

1.方法签名:方法名+形参列表

重载:方法名相同,形参列表不同
2.覆写,发生在子类继承父类 或者 类接口实现
1.方法名和形参列表相同
2.方法的返回类型和比父类的返回类型小
Animal find() { }
Brid find() {}
3.访问限定符 访问限定符只能比父类的大,或相同
但父类方法的访问限定符要是private则在子类中方法不能被覆写
4.@Override注解

接口:

interface 接口名 extends A,B,C {
// 合同/契约
void method();
// 1.public
// 2.abstract
public abstract void method();
}

1.引用只能指向对象,或者什么都不指向

2.数组引用,类类型引用,接口类型的引用
3.对象:数组对象,非抽象类类型的对象

interface I {}

class P {}
class A extends implements I {}

那些引用 可以指向该对象

I i=new A();
P p=new A();
A a=new A();

P method() {

return new P();
return new A();
}
返回的是P类型的引用,可以指向A或者P的对象,因为A是P的子类

转载地址:https://blog.csdn.net/weixin_45878524/article/details/118254506 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:正则登录以及验证码---vue
下一篇:ArrayList、LinkedList

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月14日 17时23分09秒