关于static和继承重写问题的部分讲解

前言

写这个内容是因为我自己小看这个static和重写的学问了,在刚才笔试中出现了不少疑问选项,发现自己的知识盲区,所以在这里进行一个统一讲解。(内容可能有点杂)

static

static是静态的修饰符,可以修饰类,类的方法,类的属性。

static修饰类

static修饰类的话,只能够修饰内部类。

非static内部类众所周知,如果向在外部获取内部类的对象,必须通过外部类的一个方法间接获取,无法直接new出来。
static内部类的话,就可以直接new出来。但是针对于static内部类,直接new也分两种情况。

1.原生外部类(即包含static内部类的类),直接new 内部类()即可。
2.普通外部类(不包含),需要new y原生外部类.内部类()获取内部类对象。

public class Solution {

    public void get() {
        new Inner();
    }
    
    public static class Inner{ }
}

class hello {
    public void get() {
        new Solution.Inner();
    }
}

static修饰方法

static修饰方法的话,方法内部只能使用类的static属性和方法内部定义的局部变量(即调用方法入栈,方法调用结束出栈)。

static修饰类属性

static修饰属性时,类的static方法和普通方法都能够使用。

众所周知被static修饰的属性时类所公有的,即一个类不管有多少个对象都只有这一个static属性。

注意:static属性不能够被类的对象直接使用,但是能够被类的对象通过调用方法间接使用。(但是static的方法却可以被类对象调用哦)

基本的样例就是下面

public class Solution {
    public static int x = 0;

    public void up() {
        x++;
    }
    
    public static void main(String[] args) {
        Solution solution1 = new Solution();
        solution1.up();
        Solution solution2 = new Solution();
        solution2.up();
        Solution solution3 = new Solution();
        solution3.up();
        System.out.println(Solution.x);
    }
}
//输出结果为 = 3 

继承重写问题

这也是个老生常谈的问题了,首先我先解释一下重写的概念和我的自己存在的误区(刚笔试中纠结的部分)。

在这里需要提一句一个重载的误区:返回值不同不叫重载

重写是子类对父类的同名同参方法进行的,子类方法的修饰符级别一定要大于等于父类方法的优先级(不然就会报错)
我个人在笔试中纠结的部分就是,如果子类方法修饰符级别小于父类方法,那一定不是重写父类方法,我这里认为是子类自己的方法,与父类无关。
这里就是我的错误,如果子类方法出现和父类同名同参,是一定要重写的,不能说什么的这是子类自己的方法,这是错误的思想。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值