【Java基础篇】基础知识易错集锦(二)

我们同样用几道例题来回顾相对应的基础知识; 


 

 解析:

    首先我呢区分一下实例变量和局部变量;

  • 局部变量:定义在方法内部的变量;
  • 实例变量:定义在类中但在任何方法之外,你也可以理解为全局变量;
  • 普通变量被static修饰之后就变成静态变量;

用static修饰的静态变量与普通变量的区别

        假若在定义一个类的过程中,定义了一个static修饰的变量,那么这个类在被加载的同时,被static修饰的变量就存在于内存当中了,这样一来就独立于该类的所有对象,被该类所有对象共享,将对象相关的变成了类相关,即此静态变量也可以称之为类变量。

被static修饰的方法、变量的特殊点就是可以在不创建任何对象的前提下就可以调用它(使用域名调用法直接调用)


 解析:

首先我们回顾以下概念:

  • 形式参数(形参):含参函数声明时出现,不占空间,只有在程序执行过程中调用了函数,形参才有可能得到具体的值(实参—>形参),并参与运算求得函数值;
  • 实际参数(实参):含参函数调用时出现,占内存空间,在调用函数时,实参将赋值给形参;
  • 字段修饰符:(字段也就是属性)Java中的修饰符分为类修饰符,字段修饰符,方法修饰符。根据功能的不同,主要分为以下几种:
  1. *权限访问修饰符:(可以用来修饰类、方法和字段)public、protected、default、private

  2. *final修饰符:       final的意思是不可变,可以修饰类、字段、方法。修饰类后类不能被扩展(extends),也就是不能被继承。修饰字段后字段的值不能被改变,因此如果有final修饰字段,应该对字段进行手动初始化。修饰方法后该方法不能被改变,也就是重写。

  3. *abstract修饰符:abstract是抽象的意思,用来修饰类和方法,修饰类后,该类为抽象类,不能被实例化,必需进行扩展。修饰方法后,该方法为抽象方法必须被子类重写(override)。

  4. *static修饰符:    static用来修饰内部类,方法,字段。修饰内部类说明该内部类属于外部类而不属于外部类的某个实例。修饰字段说明该字段属于类而不属于类实例。修饰方法说明该方法属于类而不属于类实例


解析:这道题不难,我是想通过这道题来回顾关于this关键字的知识;

什么情况下我们会使用到this关键字呢?

  1. 当局部变量和成员变量重名的时候,在方法中使用this表示成员变量以示区分
  2. this关键字把当前对象传递给其他方法
  3. 当需要返回当前对象的引用时,就常常在方法写return this
  4. 在构造器中调用类的其他构造器需要使用this,一个类有许多构造函数,有时候想在一个构造函数中调用其他构造函数,以避免代码重复,可以使用this关键字。

说道this就很容易联想到super关键字了,下面我们回顾一下:

一、理解super关键字

        super理解为:父类的
        super可以用来调用:属性、方法、构造器
二、super调用属性和方法

        我们可以在子类的方法或构造器中。通过使用"super.属性"或"super.方法"的方式,显式的调用父类中声明的属性或方法。但是,通常情况下,我们习惯省略"super."。
当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显式的使用"super.属性"的方式,表明调用的是父类中声明的属性。
当子类重写了父类中的方法以后,我们想在子类的方法中调用父类中被重写的方法时,则必须显式的使用"super.方法"的方式,表明调用的是父类中被重写的方法。
三、super调用构造器

        我们可以在子类的构造器中显式的使用"super(形参列表)"的方式,调用父类中声明的指定的构造器。
        "super(形参列表)"的使用,必须声明在子类构造器的首行。
        我们在类的构造器中,针对于"this(形参列表)"或"super(形参列表)"只能二选一,不能同时出现。
        在构造器的首行,没有显式的声明"this(形参列表)“或"super(形参列表)”,则默认调用的是父类中空参的构造器:super()。
        在类的多个构造器中,至少有一个类的构造器中使用了"super(形参列表)",调用父类中的构造器。

其他有关super关键字的知识可参考:

关于java中子类调用父类构造函数super();一些问题_南斋孤鹤的博客-CSDN博客_java子类构造函数super超全知识: 关于java中子类调用父类构造函数super();https://blog.csdn.net/m0_64231944/article/details/125355864?spm=1001.2014.3001.5502

猜你喜欢

转载自blog.csdn.net/m0_64231944/article/details/128262638