[2014-02-26]JAVA笔记_this、super、构造方法

一、this关键字的作用:

        ·表示类中的属性

        ·可以使用this()调用本类中的构造方法.()里面的参数不同,会自动去调用相应的构造方法

         ·this()表示当前对象的引用


例1:当参数名属性名相同时通过this区分

class Person{
	private String name;
	private int age;
	public Person(String name, int age){
	//	name = name;
		this.name = name;		//明确表示为类中的name属性赋值
	//	age = age;
		this.age = age;			//明确表示为类中的age属性赋值
	}
	public String getInfo(){
		return "姓名:" + name + " 年龄:" + age;
	}
}

public class ThisDemo01{
	public static void main(String args[]){
		Person per1 = new Person("Jerry", 30);
		System.out.println(per1.getInfo());
	}
}

例2:如果一个类中有多个构造方法,可以利用this关键字相互调用

class Person{
	private String name;
	private int age;
	public Person(){			//无参构造
		System.out.println("一个新的Person对象被实例化。");
	}
	public Person(String name, int age){
		this();				//调用Person类中的无参构造方法
		this.name = name;		//明确表示为类中的name属性赋值
		this.age = age;			//明确表示为类中的age属性赋值
	//	this();			//错误的调用只能放在构造方法首行
	}
	public String getInfo(){
		return "姓名:" + name + " 年龄:" + age;
	}
}

public class ThisDemo03{
	public static void main(String args[]){
		Person per1 = new Person("Jerry", 30);
		System.out.println(per1.getInfo());
	}
}

例3:this表示当前对象。指当前正在调用类中的方法的对象

class Person{
	public String getInfo(){
		System.out.println("Person类 --> " +this);		//直接打印this
		return null;			//此处返回null,为的是让语法不出错
	}
}

public class ThisDemo06{
	public static void main(String args[]){
		Person per1 = new Person();
		Person per2 = new Person();
		System.out.println("MAIN方法 --> " + per1);		//直接打印对象
		per1.getInfo();
		System.out.println("------------------------");
		System.out.println("MAIN方法 --> " + per2);
		per2.getInfo();
	}
}
//哪个对象调用了类中的方法,则this就表示哪个对象

`this()表示调用了无参的构造方法,如果需要调用指定的构造函数在括号加入相对应的参数。

注意:

·使用this()关键字调用构造方法的时候,必须放在构造方法首行。 

·使用this()调用本类中其他构造的时候,至少有一个构造方法是不用this()调用的。

·this表示当前调用方法的对象。

二、 super 关键字 : super表示对父类对象的引用

         super()用来调用父类中指定的构造方法,当使用super()关键字调用父类中的构造方法时,则java在子类实例化过程中不会自动调用父类中默认构造方法。

public class Child extends Parent{
	public Child(){
		super(1);	//更改java默认规则,不调用默认无参构造
		System.out.println("child");
	}

	public static void main(String args[]){
		Child child = new Child();
	}
}

class Parent{
	public Parent(int i){
		System.out.println("parent");
	}
}

三、构造方法

       · 当new() 一个类时,会首先调用构造方法。

       · 如果父类提供了带参数的构造方法(无默认构造方法),则子类必须提供带参数的构造方法。因为子类实例化之前会先去调用父类的构造方法。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值