类中的关键字

类中的关键字

super 与 this 作区分作用

super 表明 是 父类的 构造器 或者 方法 或者 属性

this 表明 是 本身类的 构造器 或者 方法 或者 属性

public class Pet {
    protected String name = "pet";

    public Pet() {
        System.out.println("--pet--");
    }

    public void print() {
        System.out.println("=pet=");
    }
}
public class Dog extends Pet {
    private String name = "dog";

    public Dog() {
        System.out.println("--dog--");
    }

    public void print() {
        System.out.println("=dog=");
    }

    public void test(String name) {
        System.out.println(name);
        System.out.println(this.name);
        System.out.println(super.name);
    }
    public void testPrint() {
        print();
        this.print();
        super.print();
    }
}
Dog dog = new Dog();
// --pet--
// --dog--
dog.test("旺财");
// 旺财
// dog
// pet

dog.testPrint();
// =dog=
// =dog=
// =pet=

super()

  1. super调用父类的构造方法,必须在构造方法的第一个

  2. super必须只能出现在子类的方法或者构造方法中!

  3. super和this不能同时调用构造方法!

super VS this

调用实例方法:

  • this.方法 或者 this.属性:调用本身的实例方法或者属性
  • super.方法 或者 super.属性:调用父类的实例方法或者属性

前提

  • this:没有继承也可以使用;
  • super:只能在有继承其他类时才可以使用;

构造方法

  • this():本类的构造;调用本类的构造方法也必须在第一行
  • super():父类的构造。子类调用父类构造方法必须在第一行

instanceof:判断一个对象是什么类型。

类型判断:在声明类型的子类父类这个范围之内 判断 对象的实际类型与父类型

类型转换:实际类型与父类型之间的转换

Object obj = new Dog();
System.out.println(obj instanceof Object);
System.out.println(obj instanceof Pet);
System.out.println(obj instanceof Dog);
System.out.println(obj instanceof Cat);
System.out.println(obj instanceof String);

// true
// true
// true
// false
// false
Pet pet = new Dog();
// 编译报错 不能类型转换
System.out.println(pet instanceof String);
Dog dog = new Dog();
// 编译报错 不能类型转换
System.out.println(dog instanceof Cat);

static关键字

静态方法、静态属性、静态代码块与类一起加载

静态方法的调用

类.方法 只能调用 静态方法 不能调用 实例方法。

静态方法 只能直接调用 静态方法。

静态代码块

package com.gcbeen.oop;

public class Pet {

    static {
        System.out.println("静态代码块");
    }

    {
        System.out.println("匿名代码块");
    }

    public Pet() {
        System.out.println("构造方法");
    }
}
new Cat();
System.out.println("=====================");
new Cat();

// 静态代码块
// 匿名代码块
// 构造方法
// =====================
// 匿名代码块
// 构造方法

使用 static 静态导入包

package com.gcbeen.oop;

import static java.lang.Math.random;
import static java.lang.Math.PI;

public class Application {
    public static void main(String[] args) {
        System.out.println(random());
        System.out.println(PI);
    }
}

// 0.10676940949080993
// 3.141592653589793
posted @   gcbeen  阅读(82)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示