(继承和抽象)javaSE查漏补缺day01

javaSE查漏补缺day01

  • 1.匿名对象什么时候用
  • 2.包名规范:
  • 3.Java为什么只能单继承
  • 4.继承的好处:子承父业,不劳而获。
  • 5.jvm的字节码和内存模型,内存结构有什么关系和区别?
  • 6.继承的原理:
  • 7.孙子不能直接访问爷爷的属性。
  • 8.重写写成类似的重载就很别扭,防止重写错误,加一个注解@override.
  • 9.重写快捷键
  • 10.private修饰的方法和属性,肯定是被继承的 但是 子类无法访问
  • 11.java的接口多实现中,同名方法冲突如何解决?
  • 12.构造方法中调用另一个构造方法,
  • 13.注释会编译成字节码吗?
  • 14.为什么子类构造方法里要先有一个父类的构造方法?
  • 15.子类无参构造调父类无参构造,子类有参调父类有参构造方法。
  • 16.抽象方法起一个约束的作用。
  • 17.抽象类可以声明并定义构造函数
  • 18.final修饰符————
  • 19.抽象方法可以有参数和返回类型吗?
  • 20.请问final是否可以修饰形参?如果可以,它有什么意义?

1.匿名对象什么时候用

匿名对象其实就是对象,对象具有的功能匿名对象都具有,只不过有名字的对象可以重复使用,匿名对象只能用一次罢了。
匿名对象平时使用场景较少,日常项目开发中很少使用,一般框架层面才会用到

匿名对象特点:
1、由于我们没有记录堆内存对象的地址值,所以只能用一次,再次使用就找不到了
2、匿名对象的好处就是使用完毕就是垃圾,可以在垃圾回收器空闲时回收,节省内存空间

2.包名规范:

—属于反写----域名.公司名.系统名。com.china.system.

3.Java为什么只能单继承

Java中类不能多继承类是为了安全。因为无论是抽象类还是非抽象类都包含非抽象的方法(非抽象类也可能没有),当类可以多继承类时,被继承的不同的父类可能会有同名同参的方法,如果子类也没有重写这个同名同参的方法,则在子类的实例调用这个方法的时候就会出现冲突。

4.继承的好处:子承父业,不劳而获。

1)提高代码复用性。
2)易于维护,修改父类,子类都会被改变。

5.jvm的字节码和内存模型,内存结构有什么关系和区别?

6.继承的原理:

并不是把父类编译到子类里面,而是方法区加载子类和父类,在堆里面开辟子类空间,在子类空间中开辟父类空间。

7.孙子不能直接访问爷爷的属性。

不能super.super

8.重写写成类似的重载就很别扭,防止重写错误,加一个注解@override.

9.重写快捷键

-----子类中,直接写方法名+enter.

10.private修饰的方法和属性,肯定是被继承的 但是 子类无法访问

父类的私有属性或方法。。。。相当于爸爸的私房钱

11.java的接口多实现中,同名方法冲突如何解决?

必须重写同名方法。

C++的多继承中,同名成员变量和成员函数通过作用域分辨符进行区分

12.构造方法中调用另一个构造方法,

需要用this();—而且必须在首行。
this()和super()必须在构造方法中的第一行有效语句,否则会编译报错,这就是为什么this和super关键字不能同时存在的原因。

13.注释会编译成字节码吗?

不会

14.为什么子类构造方法里要先有一个父类的构造方法?

子类对象空间内部会有父类对象空间
目的就是为了初始化父类的参数,子类才能使用

15.子类无参构造调父类无参构造,子类有参调父类有参构造方法。

子类的构造方法应该多于父类

16.抽象方法起一个约束的作用。

相当于模板。

17.抽象类可以声明并定义构造函数

—他可以用来初始化抽象类内部声明的通用变量,并被各种实现使用(给子类用来初始化父类成员属性用的)

18.final修饰符————

-----最终类,不可以被其他类继承。比如银行的一些类

-----方法不能被重写

-----基本数据类型:变量不能被再次赋值,只能进行一次初始化 。

------引用类型:不可以再指向别的地址,但里面的内容可以改变。

int[] arr = {1,2};----arr = new int[2];(错误)—arr[0] = 10;(正确)

19.抽象方法可以有参数和返回类型吗?

是的,但是不能有方法体。

20.请问final是否可以修饰形参?如果可以,它有什么意义?

可以,表示在方法内,不能更改其值(引用)。尤其对“引用类型”的形参最有意义,可以保证在方法内,不会修改“对象”的地址。

public void set(final String parameter) {
    System.out.println(parameter);
    //parameter = 10;--错误。
}

public static void main(String[] args) {
    new FinalParameter().set("6");
}

运行结果:
是能正常运行的。
但是如果想再修改这个参数的值,编译就会报错:
总结
final修饰的参数只能被赋值一次,就不能再被修改了,否则就会编译报错。
原文链接:https://blog.csdn.net/weixin_38106322/article/details/106095211
理解:再传入引用类型的某一个数据的时候,方法只能使用该数据,不能进行修改。保证对象的安全性

你可能感兴趣的:(java,开发语言,后端)