package com.jsti.guiyang_01; /*
自定义Phone类
this关键字
代表当前正在调用这个方法(访问成员变量)的对象(实例)
1.在setxxx方法中用来区分成员变量和局部变量
2.在方法中指定调动本类的其它方法 标准javaBean
私有的成员变量,公有的getxxx,setxxx方法
手动定义空参的构造方法 */
class Phone{
//私有成员变量
private String brand;
private int price;
private String color; //公有getxxx setxxx方法
public void setBrand(String brand){
this.brand = brand;
}
public String getBrand(){
return brand;
} public void setPrice(int price){
this.price = price;
}
public int getPrice(){
return price;
} public void setColor(String color){
this.color = color;
}
public String getColor(){
return color;
}
//构造方法:
//与类同名,没有返回值
public Phone(String brand,int price,String color){
this(brand,price);//在构造方法中调用其它的构造方法,必须是构造方法的第一条语句
System.out.println("三个参数的构造方法被调用"); // this.brand = brand;
// this.price = price; this.color = color; //return xxxx;
}
//构造方法:
//与类同名,没有返回值
public Phone(String brand,int price){
this(brand);
System.out.println("两个参数的构造方法被调用");
// this.brand = brand;
this.price = price;
}
//构造方法:
//与类同名,没有返回值
public Phone(String brand){
System.out.println("一个参数的构造方法被调用");
this.brand = brand;
}
//默认的构造方法
public Phone(){} //定义show方法,用于显示所有的成员变量
public void show(){
System.out.println(brand +" <> "+ price +" <> "+ color);
}
public void test(){
show();//this可以省略
call("tom");
} public void call(String name){
System.out.println("给 " + name + " 打电话");
}
} public class PhoneDemo {
public static void main(String[] args){
/*
Phone p = new Phone();
p.setBrand("iPhone");
p.setPrice(7000);
p.setColor("red");
System.out.println();
// p.show();
// p.call("Tyson");
p.test();
*/ //构造方法的调用new关键字后边实际上就是在调用构造方法
Phone p = new Phone("iPhone",7000,"red");
p.test();
}
}
下段代码源自https://blog.csdn.net/fzfengzhi/article/details/2174406
* 本示例为了说明this的三种用法! */ package test; public class ThisTest { private int i=0; //第一个构造器:有一个int型形参 ThisTest(int i){ this.i=i+1;//此时this表示引用成员变量i,而非函数参数i System.out.println("Int constructor i——this.i: "+i+"——"+this.i); System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1)); //从两个输出结果充分证明了i和this.i是不一样的! } // 第二个构造器:有一个String型形参 ThisTest(String s){ System.out.println("String constructor: "+s); } // 第三个构造器:有一个int型形参和一个String型形参 ThisTest(int i,String s){ this(s);//this调用第二个构造器 //this(i); /*此处不能用,因为其他任何方法都不能调用构造器,只有构造方法能调用他。 但是必须注意:就算是构造方法调用构造器,也必须为于其第一行,构造方法也只能调 用一个且仅一次构造器!*/ this.i=i++;//this以引用该类的成员变量 System.out.println("Int constructor: "+i+"/n"+"String constructor: "+s); } public ThisTest increment(){ this.i++; return this;//返回的是当前的对象,该对象属于(ThisTest) } public static void main(String[] args){ ThisTest tt0=new ThisTest(10); ThisTest tt1=new ThisTest("ok"); ThisTest tt2=new ThisTest(20,"ok again!"); System.out.println(tt0.increment().increment().increment().i); //tt0.increment()返回一个在tt0基础上i++的ThisTest对象, //接着又返回在上面返回的对象基础上i++的ThisTest对象! } } 运行结果: Int constructor i——this.i: 10——11 String constructor: ok String constructor: ok again! Int constructor: 21 String constructor: ok again!