基础2-对象-关键字

2020-03-27  本文已影响0人  通灵路耳

this和super注意

注意:访问构造方法时,不可同时出现super和this
解答:super和this必须都放在第一行,会冲突。

this关键字

this核心是指向“成员”,有三种用法
本类方法中,访问本类成员属性
本类方法中,访问本类其他成员方法
本类方法中,访问本类其他构造方法

public class HelloWorld {
  int a = 2;
  public void run(){
      System.out.println("呵呵");
  }
}

class zi {
    int a = 1;
    public void run2(){
        System.out.println("呵呵");
    }
    public void run(){
       int a = 2;
       //1、指向本类成员变量
        System.out.println(this.a);
       //2、指向本类其他成员方法
        this.run2();
    }
    //3、指向本类其他构造方法
    public zi(){
        this(123);
    }
    public zi(int a){
    }
}

super关键字

super核心是指向“父类”,有三种用法
1、子类方法中,访问父类属性
2、子类方法中,访问父类普通方法
3、子类方法中,访问父类构造方法

public class HelloWorld {
  int a = 2;
  public void run(){
      System.out.println("呵呵");
  }
}
//子类
class zi extends  HelloWorld{
    int a = 1;
    //子类方法中
    public void run(){
        //1、调用父类属性
        System.out.println(super.a);
        //2、调用父类普通方法
        super.run();
    }
    //3、调用父类构造方法
    public zi(){
        super();
    }
}

instanceof关键字

用在多态,判断是否可以向下转型
Animal  animal  =  new  Dog();
if(animal  instanceof  Dog){
          Dog  dog  =  (Dog)animal;
          dog.eat();
}

final关键字

final修饰变量,其值不能改变
final修饰的类,不能被继承
final修饰的方法,不能被重写覆盖

static关键字

static第一个功能,本类共享
static第二个功能,跳过实例化,直接类名调用
注意:
1、static不能和this使用
解答:static修饰的是类区域,属于所有对象;this修饰的是具体的对象
2、静态代码块,只加载一次,比构造方法先执行
3、static修饰的方法,不能被重写
解答:重写是为了实现多态,如果重写static方法,那么父类引用调用的依然是父类
的static方法,而没有调用子类的static方法,失去多态的特性

public class  HelloWorld {
    public static void main(String[] args) {
        //共享
        Student s1 = new Student("张三",12);
        System.out.println("姓名:"+s1.getName()
                +"年龄:"+s1.getAge()+"地址:"+Student.address);
        Student s2 = new Student("李四",23);
        System.out.println("姓名:"+s2.getName()
                +"年龄:"+s2.getAge()+"地址:"+Student.address);
    }
}
class Student{
    private String name;
    private int age;
    static  String address = "中国";

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

上一篇下一篇

猜你喜欢

热点阅读