java反射时_方法声明父类类型_传入子类对象_报找不到方法错误_java错题及易错点总结(一)...

20190720112614343.png

?

final修饰符

final变量:

final变量能被显式地初始化并且只能初始化一次,被声明为final的对象的引用不能指向不同的对象,但是final对象里的数据可以被改变。也就是说final对象的引用不能改变,但是里面的值可以改变,final修饰符通常和static修饰符一起来创建类常量。

final方法:

类中的final方法可以被子类继承,但是不能被子类修改。

声明final方法的主要目的是防止该方法的内容被修改。

如下所示,使用final修饰符的声明方法。

final类:

final类不能被继承,没有类能够继承final的任何特性。

20190720112637792.png

?

初始化过程:

1.初始化父类的静态成员变量和静态代码块;

2.初始化子类的静态成员变量和静态代码块;

3.初始化父类的普通成员变量和代码块,再执行父类的构造方法;

4.初始话子类的普通成员变量和代码块,再执行子类的构造方法;

本题:

(1)初始化父类的普通成员变量和代码块,执行Y y = new Y();输出Y

(2)再执行父类的构造方法,输出X

(3)初始化子类的普通成员变量和代码块,执行Y y = new Y();输出Y

(4)再执行子类的构造方法;输出Z

所以输出YXYZ

20190720112702601.png

?

重载的定义:

1.函数或者方法有相同的名称

2.参数的列表不相同

3.与返回值的类型无关

20190720112721511.png

?

?

MyClass方法并不是构造参数,而是返回类型为void的普通方法,普通方法自然需要实例化

对象后去调用它A、B可以使用函数的默认无参构造器,C传入了一个int值,与方法的传入参

数类型不一致。

20190720112741969.png

?

A:抽象类也是一个类,有构造方法的

B:接口不允许有构造函数,不过是可以实例化的

C:类是不允许多继承的,抽象类也如此

?D:jdk1.8开始,接口中的方法才可以有方法体

接口:

1.多实现

2.变量类型默认且之只能为public static final

3.函数类型默认且只能为public,只能有public类型的静态成员函数

4.子类必须实现所有的接口函数

5.可以用main方法,可以new一个接口,需要在方法体中实现多有的接口函数

6.没有构造器,可以实例化

抽象类:

1.abstract修饰的类,不能实例化的类

2.可以有构造器

3.可以有抽象方法的,也可以没有

4.有抽象方法的类一定是抽象类

Jdk1.8

接口中可以有default类型的方法,实现类可以选择实现该方法

意义:默认方法的主要优势是提供一种拓展接口的方法,而不破坏现有代码。另一个优势为该方法是可选的,子类可以根据不同的需求Override或默认实现。

20190720112834294.png

?

?

主方法变量没有初始化直接编译错误,方法中的引用调用没有初始化才是空指针异常

?

?

其余知识点

对属性使用getter和setter方法,体现的是注入性。

栈:临时变量/局部变量

堆:对象,对象中的成员变量/属性

方法区:类的相关信息

引用:指向对象,变量类型

对象:new出来的,存在堆中

成员变量不需要初始化

局部变量需要初始化

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值