java关键字 this,super,static,final的总结

一、Java提供一个this关键字,this关键字总是指向调用该方法的对象。
  This关键字最大的作用时让类中一个方法访问该类里的另一个方法或者field。
  This可以代表任何对象,当this出现在某个方法体中时,它代表的对象是不确定的,但它的类型是确定的,它代表的对象只能是当前类;只有当这个方法被调用时,他所代表的对象才能被确定下来:谁在调用这个方法,this就代表谁。
  在程序中主要的用途有以下这些方面:
  使用this关键字引用成员变量;
  使用this关键字在自身构造器方法中调用重载的构造方法;
  使用this关键字引用成员方法。
1.使用this关键字引用成员变量
  在构造方法中经常使用this来引用成员变量对变量进行初始化,如果构造函数中的参数名和成员变量不同则this可以省略,如果相同则不能省略。

 class Animal extends Creature
{
	private String name;
	public Animal(String name)
	{
		this.name = name;
		System.out.println("animal 带一个参数的构造器," + "动物的名字是"+name);
	}
}

2. 使用this关键字在自身构造器方法中调用重载的构造方法
  当类的构造方法有多个时,我们需要在一个构造方法中调用另一个构造方法则此时需要使用this来调用。

 class Animal extends Creature
{
	private String name;
	public Animal(String name)
	{
		this.name = name;
		System.out.println("animal 带一个参数的构造器," + "动物的名字是"+name);
	}
	 public Animal(String name, int age)
	 {
		 this(name);//调用同一个重载的构造器
		 System.out.println("Animal 带两个参数的构造器"+ "动物的年龄为:"+age);
	 }
}

3.使用this关键字引用成员方法。
  当我们在类中的一个方法需要调用该类的另一个方法时,我们可以使用this来调用,通常this可以省略。

public class Dog
{
	public void run(){ 
		System.out.println("正在执行的run方法");
	}
	public void jump()
	{
		this.run();//this可以省略
		System.out.println("正在执行jump方法");
	}
}

4.需要注意的地方:
  static修饰的方法不能使用this引用,因为在static修饰的方法中使用this关键字,则这个关键字无法指向合适的对象。
  
二、super 关键字
  super可以理解指向自己父类的对象的一个指针,这个父类是指离自己最近的一个父类,在程序设计中主要有以下三种用法:

1.普通的直接引用,与this类似,super相当于是指向当前对象的父类,可以使用super.xxx来引用父类的成员

2.子类中的成员变量或方法与父类中的成员变量或方法同名时需要使用super来显式调用父类的成员。

public class Bird
{
	String name ;
	public Bird(String name )
	{
		this.name =name;
	}
	public void fly()
	{
		
		System.out.println("我会飞,我骄傲");
	}
}
public class Ostrich extends Bird
{
    public Ostrich(String name)
	{
		super(name);
		// TODO Auto-generated constructor stub
	}
    
	public void fly()
    { 
    	System.out.println(super.name);
    }
	public static void main(String[] args)
	{
		Ostrich o = new Ostrich("鸵鸟");
		o.fly();
	}
}

执行结果:

鸵鸟

3.引用构造函数

super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。
  this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。

public class Ostrich extends Bird
{
    public Ostrich(String name)
	{
		super(name);
		// TODO Auto-generated constructor stub
	}
}

三、static 关键字
  static 修饰的变量通过叫做静态变量,static修饰的方法称为静态方法,static修饰的方法称为静态方法,static修饰的代码块叫做静态代码块。
  1.static变量
  static变量也称为静态变量,静态变量属于类变量可以用类名来调用,非静态是实例变量不能用类名来调用,静态变量从这个类的准备阶段起开始存在,直到系统完全销毁这个类,类变量的作用域与这个类的生存范围相同;而实例变量从该类的实例创建起开始存在,直到系统完全销毁这个实例,实例变量与对应的实例生存范围相同。

private static int age =6;

2.static方法
  static方法也成为静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是不能使用this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

public static void jump()
{
	System.out.println("正在执行jump方法");
}

3.static 代码块
  static修饰的代码块称为静态代码块,静态代码块是类相关的,系统在类初始化阶段执行静态代码块而不是在创建对象时才执行。因此静态代码块总是比普通代码块先执行。而且只会执行一次。

static
{
	String name = "dog";
}

四、final
  final关键字可以用于修饰类、变量、和方法,final修饰变量时,表示该变量一旦获得了初始值就不可被改变,java语法规定:final修饰的成员变量必须由程序员显示指定初始值。
  final修饰成员变量指定初始值的地方如下:
  类变量:必须在静态初始化块中或声明该变量时指定初始值
  实例变量:必须在非静态初始块、声明该field或构造器中指定初始值。
  final修饰局部变量时可以在定义是指定默认值也可以不指定默认值。
  final修饰引用类型变量不能重新赋值但可以改变引用类型变量所引用对象的内容(引用类型变量指向的地址值不变)。
  final修饰的方法不可被重写比如Object类中的getClass()方法。
  final修饰的类不可以被继承,不能有子类,例如Math类就是一个fina类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值