JavaSE之关键字


Java中有非常重要的四大关键字,分别是 thissuperstaticfinal。今天我们就来说一说这四大关键字的作用。

this关键字

this只能出现在一个类的内部,而且是出现在类的某个方法里。this代表的是当前对象,也就是说谁调用这个方法,谁就是thisthis不能出现在静态方法里。

this能做什么?

  1. this可以访问本类的属性
  2. this可以访问本类的方法
  3. this可以调用本类的其他构造方法

super关键字

super的作用很简单就是用来代表父类对象

那么super能做什么呢?

  • super可以访问父类继承的属性(必须符合访问修饰符的要求)

  • super可以访问父类继承的方法(必须符合访问修饰符的要求)

  • super可以调用父类的构造方法(这个下一章会讲到)

平时很少使用super关键字,因为无论你通过super访问属性还是方法,你访问的属性和方法子类已经继承过来了,所以我们用this就可以访问了。

什么时候使用super呢?

  1. 调用父类的构造方法(构造方法是无法继承的,只能调用)
  2. 当出现方法重写的时候,你想用父类的方法实现时就可以使用super来调用

static关键字

static是静态的的意思,在java里,static用来修饰属性或者方法的

static修饰属性

如果static修饰属性说明这个属性是类属性而不是实例属性或者叫对象属性,这个类的所有对象将公用这个属性(可以定义全局变量或常量)

类属性:属性独立于对象,不是每个对象都有的。

对象属性:每个对象都有这个属性。

例如:Person类里的name,sex,age…等属性

如何访问static修饰的属性?

  • 对象.类属性名
  • 类名.类属性名(推荐)

static修饰的属性有什么用?
比如有这样的需求:我想知道一共创建了多少个Person对象,这时就可以用static(在构造方法里使用count++)

public class Person {
    public static int count = 0;

    public Person() {
        count++;
    }
}

可以在一个方法中实例化这个对象,测试这个统计

public static void main(String[] args) {
    Person person1 = new Person();
    Person person2 = new Person();
    Person person3 = new Person();
    Person person4 = new Person();
    Person person5 = new Person();
    System.out.println("Person被实例化了 " + Person.count + "次.");
}

static可以修饰方法

static修饰方法,这个方法就是类方法,而不是对象方法

类方法:一旦一个方法定义成类方法,这个方法可以通过类名直接调用,而不用创建对象;

当你一个方法定义成类方法之后,也可以通过对象来调用方法,但是推荐使用类名调用静态方法

那么什么时候会用到static关键字呢?

很多地方…,例如Arrays类就用了很多static方法,系统的工具类就大多都是static修饰的方法。

  1. 我们自己什么时候用static呢?

任何一个没有用到实例方法的变量都可以定义成static方法。

  1. 我们平时怎么使用static方法呢?

我们平时通过static去写工具类,这个类里面几乎所有的方法都是static的。

对象方法和类方法的区别

类方法里不能出现实例变量(类属性),因为类方法可以在不创建对象的情况下由类名去调用,这个时候就会出现对象不存在的问题。你在为某个对象的某个属性赋值,又或者你有很多对象,那么你究竟在为哪个对象的属性赋值?

static修饰类

static也可以修饰类,只不过它不能修饰普通的类,普通类是不能被声明为静态的,static只能修饰内部类。至于什么是内部类?内部类顾名思义就是定义在一个类中的类。这里简单的提一下,后续章节会着重介绍。下面给出一个内部类的示例:

public class A {
    private String name;
    
    public void print(String str) {
        System.out.println(str);
    }
    
    static class B {
        private String nickName;
        
        public void setNickName(String nickName) {
            this.nickName = nickName;
        }
        public String getNickName() {
            return nickName;
        }
    }
    
    class C {
        public void test() {
            System.out.println("我是内部类C");
        }
    }
}

普通的内部类实例化时需要先实例化外面的类,然后通过外层的对象再实例化内部类。但是静态内部类不需要再这样实例化,被static修饰的类变成静态内部类后功能和普通类一样,可以直接绕过外层类直接实例化内部类。

A a = new A();
a.print("Hello");
A.C c = a.new C();
c.test();
A.B b = new A.B();
b.setNickName("Hello,我是一个静态内部类");
b.getNickName();

final关键字

final是最终的意思,final关键字在Java中可以修饰变量,方法,类

final修饰变量

final修饰一个变量的时候,说明这个变量只能赋值一次;final修饰静态变量,静态变量也只能赋值一次

什么时候使用final修饰变量呢?

当你不希望别人修改变量值得时候使用final

final修饰方法

被修饰的方法不能被重写

什么时候用final修饰方法呢?

当你不希望这个方法被子类重写的时候使用final

final修饰类

被修饰的类不能被继承。

什么时候使用final修饰类?

当你不希望别的类继承的时候使用final

-------------------------------------下一章节->JavaSE之String--------------------------------

-------------------------------------返回->JavaSE系列<-目录-------------------------------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值