面向对象-四大关键字

四大关键字:super,this,final,static

  1. this(当前类):

(1)this

位置:在构造方法中或非静态方法中

代表的是当前对象(即哪个对象调用当前的属性或方法 this即这个对象

在构造方法中或非静态方法(实例级别的方法)中this.默认可以省略,当局部变量和全局变量(属性)同名时,如果想要代表全局变量,this不能省略

(2)this(xxx)

位置:只能在构造方法中,且只能在第一行出现

上面的构造函数调用下面的构造函数

代表:调用当前类的构造方法(构造方法调用构造方法)super(在子类中)*

this.和super.不能出现在静态方法中

2.super.

位置:在子构造方法中或非静态方法

代表的是父类对象(调用者对象的父对象)

代表调用父的属性或者方法(不能省略

(2)super()

位置:只能在子构造方法中,且只能在第一行出现 (this()和super()不能同时出现

特殊:默认构造方法的第一行省略了super() 即子类的构造方法默认会自动调用父类的无参数构造。 自己写super(xxx)则不再默认

代表:调用父类的构造方法

3.static

静态代码块:

1.在类首次加载时运行,且只会运行一次。

(1)当前类中入口方法触发类加载

(2)创建对象触发类加载

(3)静态内容的调用触发类加载

(4)反射机制可以触发类的加载

括号中放的是类全路径。copy中可查看类的全路径。

异常:Alt+enter

2.有继承关系的类

在加载子类的时候会先加载父类

先执行父的静态代码块-》子的静态代码块

非静态代码块:只有一个人大括号即可

1.在调用构造方法时触发,次数结合调用构造方法的次数

先执行非静态代码块-》构造方法

2.当有静态代码块时 先执行静态代码块1次-》(非静态代码块,构造方法)可能N次

3.有父子关系时 (静态代码块,非静态代码块,构造方法)

父静态代码块-》子静态代码块-》父(非静态代码块-》构造方法)-》子(非静态代码块-》构造方法)

4.final(最终)

从小到大

* 1.修饰变量(即常量 值不能改变)

1.1全局变量

a.+ final 后全局变量必须被初始化

b.+ final 全局变量值不能改变 (引用类型不能改变的是地址,但是可以修改属性值)*

c.其他是全局和局部的区别】

1.2局部变量

a.+final 后局部变量可以先声明,之后赋值

b.+ final 后局部变量值不能改变(引用类型不能改变的是地址,但是可以修改属性值)* 扩展:

项目应用场景

常量一般用大写,为了区分多个单词用下划线分割 SIGN_FLG .一般对于全局变量static和final连用 static final

参数加final,代表参数不能改变

项目中公共使用的常量 会单独放置一个常量类中 Constant.java (访问修饰符 static final 类型 变量名=值

2.修饰方法(最终方法 不能被重写)

3.修饰类(最终类 不能被继承) 例如:String就是一个final修饰的最终类不能被继承

package com.soft863.www.demo.demo0216.key.final_demo;
/*
* final(最终)
* 从小到大
* 1.修饰变量(即常量 值不能改变)
*   1.1全局变量
*      a.+ final 后全局变量必须被初始化
*      b.+ final 全局变量值不能改变 (引用类型不能改变的是地址,但是可以修改属性值)
*      【c.其他是全局和局部的区别】
*   1.2局部变量
*     a.+final 后局部变量可以先声明,之后赋值
*     b.+ final 后局部变量值不能改变(引用类型不能改变的是地址,但是可以修改属性值)
* 扩展:(项目应用场景
*   常量一般用大写,为了区分多个单词用下划线分割  SIGN_FLG
*   一般对于全局变量static和final连用  static final
*   参数加final,代表参数不能改变
*   项目中公共使用的常量 会单独放置一个常量类中  Constant.java (访问修饰符 static final 类型 变量名=值)
*
* 2.修饰方法(最终方法 不能被重写)
*
* 3.修饰类(最终类 不能被继承)
*  例如:String就是一个final修饰的最终类不能被继承
*
* */
//public final class Person {
public  class Person {
    public String name;
    public  final String SIGN = ",";
    final Worker worker = new Worker();

    public void method_01(){
        int num;
        final int num2;
        num2 = 5;
        //System.out.println(num);// 变量必须赋值才可以使用
       // System.out.println(num2);
        // SIGN = "。";final修饰属性 值不能改变
       // num2 = 6;//
        worker.name = "ls";
        final Worker worker2 = new Worker();
        worker2.name = "ww";

    }

    public final void eat(){

        System.out.println("人吃饭");
    }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值