e^nx

导航

学习JavaSE过程中的疑问点(第一周)

  1. 方法签名= 方法的名称参数类型

  2. 构造器和方法是不是都可以重载,都可以在定义类的时候定义多个?

    是的

  3. java为什么实际上是值传递,包括引用数据类型。

    传递的是引用的拷贝,而不是像c语言地址传递,传递的是实参!! 形参的地址被交换后,自然实参也发生改变,而java传递的是引用的拷贝,相当于传递的是一个标签,标签交换,不改变原来的标签(引用)

  4. scanner的使用问题,连续输入字符串和整型

    第一种解决方法:新创scanner 对象

    第二种:都用字符串接受。

  5. static ?

    static修饰的方法只能调用static

    static 修饰成员变量,所有实例共享。

    静态的成员变量在类加载的最后一步默认初始化

    静态方法也是在类加载以后,就可使用,可用类名.方法名()调用这个方法

    必须用类名.静态方法(变量) 不要用实例去调用静态方法和变量,static变量,方法,是属于类的

    于普通成员变量的对比

    所属不同:

    调用方式不同:

    在内存中的位置不同

    在内存中出现的时间不同

    普通成员方法,所有成员都可以访问

    静态成员方法,只可访问static成员

  6. protect 修饰符

    在一个包内,基类,子类,其他类都可访问

    在不同包内,基类实例不可访问,子类在子类作用范围内的实例对象可访问,子类在其他类的实例对象不可访问,其他类里面的子类不可访问。

    要用对象名调用一个继承自父类protected成员时,应该怎么思考能不能访问?

    • 首先考虑是否同类,同包,如果同类或同包,创建父类对象,子类对象,必然都可以访问
    • 如果不同包,考虑是否是子类中,如果不在子类中,无论创建什么对象,必然都不可以访问
    • 如果在不同包的子类中,考虑调用protected成员的对象性质
      • 如果使用的对象是父类对象,必然不可以访问
      • 如果使用的对象是子类对象,仍然要考虑
        • 如果该子类对象就是当前类的对象,可以访问
        • 如果该子类对象不是当前类的对象,不可以访问
  7. 类加载

    把自定义类,.class文件加载到方法区中,

    类加载的时机?

    1. 实例化的时候
    2. 调用静态成员的时候
    3. 调用静态方法时
    4. 调用某个类的main方法时,类加载
  8. 面试考点 代码块问题

    • 构造代码块中成员变量的赋值和成员变量的初始化赋值 看代码顺序
    • 静态成员变量和静态代码块也是看代码顺序执行
    • 无论实例化的时候用了哪个构造器,都会执行构造代码块-
    • 静态代码块随着类加载执行,不能调用非静态-
    • 构造方法方法中有this()调用构造代码器就先执行this 然后再就是代码块,
  9. 子类与父类存在同名变量,和同名方法问题的情况

    同名变量的访问,对象.的访问方式,按照编辑器检索规则,先找子类,子类找到就不找了,即隐藏了父类同名变量。

    同名方法的访问:覆盖父类的方法,覆盖的是对象实例的内存中,父类成员信息。而不是原来方法区中的父类被改变。

  10. default 关键字有啥用?

    同一类,同一包中子类,或者其他类都可以访问。

    default的访问权限和”在一个包中就行,不管你在哪个类中“

  11. 多态特性中,向上转型得好处是什么?

    能够精简代码,同一个引用触发多种形态,有利于以父类引用去传参,比声明多个子类更简洁。

  12. 子类为啥不继承父类的构造方法

    因为子类初始化之前,先父类初始化,并把父类的初始化信息给了子类,父类不是对象。子类既然会调用父类无参构造,那么就不用继承父类构造方法了。

  13. 向上转型的时候,父类引用是否能够调用 子类属性(成员变量),和子类普通成员方法,和重写的方法。为什么?

    对于成员变量而言:

    无法直接访问子类属性,编译器的检测机制问题,从当前引用开始检测,相上检测。成员遍历没有多态

    对于子类自己的普通成员方法:

    父类引用无法调用,编译器的检测机制问题,从当前引用开始检测,相上检测。

    对于重写的方法:

    父类引用可以调用,

    遍历时看左边,运行时看右边。只能调用子类的重写方法

    父类引用指向了子类对象中的父类成员信息区域。

  14. 引用数据类型转换:

    要在继承关系上转换。

    向上转型:

    对于成员变量来说:编译运行都看左边

    对于成员方法来说:编译看左边,运行看右边

    向下转型:

    转换的是引用而已,指向的对象不变。引用中的地址不变。

  15. Java没有语法意义上真正的多继承,但有实际意义上的多继承?这句花怎么理解?通过接口如何实现?

    因为接口可以多继承,接口就是为了拓展功能。 实际意义上,接口可以让类继承多个接口的方法。

    实际上实现了多继承。通过内部类也可以实现多继承

posted on 2021-01-12 20:34  e^nx  阅读(38)  评论(0编辑  收藏  举报