java——this关键字、super关键字与final关键字的总结

this关键字

this可以调用本类属性、本类方法、当前对象。
1.this调用本类属性
使用this.属性名称表示直接从类中寻找同名属性。在类中使用本类属性一定要加上this。

class Person{
    private String name;
    private int age;
      public Person(String name,int age){
          this.name = name ;//调用本类属性
          this.age = age ;
          }
}

2.this调用本类方法
a.this调用构造方法:在构造方法首行使用this(参数)表示调用本类的构造方法。

  • this调用本类的构造方法必须写在构造方法首行

  • this调用构造方法不能成”环“

    class Person{
             private String name;
             private int age;
               public Person(){
                   System.out.println("*******")
                   }
                   public Person(String name){
                       this();//调用本类无参构造
                       this.name=name;
                   }
                   public Person(String name, int age){
                       this(name);//调用本类有参构造
                       this.age=age;
                   }
      }
    

b.this调用本类的普通方法:this.方法名称(参数)
若在本类中调用普通方法,一般将this加上,尤其是在有继承的情况下,使用this可以明确表示调用的是本类方法。

class Person{
    private int age;
    private String name;
    public Person(int age,String name){
        this.age=age;
        this.name=name;
        this.print();//调用本类普通方法
    }
    public void print(){
        System.out.println("***");
    }
}

3.this调用当前对象
当前调用的属性或方法是通过哪个对象调用的,this就指代它。

super关键字

1.super调用父类属性
super.属性名称(明确表示直接从父类中查找属性)

2.表示父类方法
a.表示父类构造方法:super(方法参数);

  • 调用父类无参构造时,子类构造方法首行super()可以省略
  • 当父类不存在无参构造时,子类构造方法中必须使用super(方法参数)明确表示当前调用的是哪个父类构造,此时super不能省略,必须处于子类构造方法首行,此时子类不存在this构造器调用。

b.表示父类被覆写的方法
super.方法名(参数)

this关键字与super关键字的区别:
java——this关键字、super关键字与final关键字的总结_第1张图片

final关键字

final关键字-终结器

1.修饰属性:使用final定义的变量就成了常量,常量必须在声明时赋值,并且赋值后无法修改。
Java中定义常量一般final与static共同修饰。
final修饰数据类型无论是基本类型还是引用类型,值不能改变,对于引用类型而言,不可改变的是指向不能变(保存的堆内存地址不能改变)。

2.修饰方法
被final修饰的方法不能被覆写。

3.修饰类
被final修饰的类没有子类。

被final修饰的变量,数据类型不会变化。

数据类型转换:
当使用+、-、*、/、%等数学运算时,遵循以下原则:

只要两个操作数中有一个是double类型,另外一个会自动转为double类型,并且结果也是double.

只要两个数中有一个是float类型…,另外。。。。。。自动转为float,。。结果float

只要…long,另外一个…long,结果…long

否则操作数为byte、short、int、char时,两个操作数均会转为int类型,并且结果也为int。

但是,被final修饰的变量,数据类型不会发生上述变化!

你可能感兴趣的:(java详解,java知识点)