Java面向对象_对象一一对应关系和this关键字
一、打个比方,一个人有一个身份证号,一个身份证号对应一个人。一个英雄对应一把武器,一把武器对应一个英雄。生活中很多对象都存在一一对应关系,那么一一对应关系在代码中是如何实现的呢?举个例子,英雄和武器一一对应,代码如下:
1 public class Practice14 { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 Hero hero=new Hero("吕布",25); 9 Weapon weapon=new Weapon("方天画戟",1); 10 //关联关系 11 hero.setWeapon(weapon); 12 weapon.setHero(hero); 13 //调用get方法获取 14 System.out.println("我的名字:"+hero.getName()+" "+"使用的武器:"+hero.getWeapon().getName()); 15 16 } 17 18 } 19 //武器类 20 class Weapon{ 21 private String name; 22 private int star; 23 private Hero hero;//表示一对一关系 24 public Weapon(){} 25 public Weapon(String name,int star){ 26 this.name=name; 27 this.star=star; 28 } 29 public Hero getHero() { 30 return hero; 31 } 32 public void setHero(Hero hero) { 33 this.hero = hero; 34 } 35 public String getName() { 36 return name; 37 } 38 public void setName(String name) { 39 this.name = name; 40 } 41 public int getStar() { 42 return star; 43 } 44 public void setStar(int star) { 45 this.star = star; 46 } 47 } 48 //英雄类 49 class Hero{ 50 private String name; 51 private int age; 52 private Weapon weapon; 53 public Hero(){} 54 public Hero(String name,int age){ 55 this.name=name; 56 this.age=age; 57 } 58 59 public Weapon getWeapon() { 60 return weapon; 61 } 62 public void setWeapon(Weapon weapon) { 63 this.weapon = weapon; 64 } 65 public String getName() { 66 return name; 67 } 68 public void setName(String name) { 69 this.name = name; 70 } 71 public int getAge() { 72 return age; 73 } 74 public void setAge(int age) { 75 this.age = age; 76 } 77 78 }
二、this关键字
this关键字可以完成的操作:调用类中的属性;调用类中的方法或构造方法;表示当前对象
谁调用这个方法,this就代表谁。
1 class Hero{ 2 private String name; 3 private int age; 4 private Weapon weapon; 5 public Hero(){ 6 this("曹操",21);//在构造方法中调用其它构造方法时使用this(参数),该语句必须放在第一句,必须保证构造方法调用后有出口 7 System.out.println("无参构造方法"); 8 9 } 10 public Hero(String name,int age){ 11 12 this.name=name; 13 this.age=age; 14 System.out.println("有参构造方法"); 15 } 16 17 public Weapon getWeapon() { 18 return weapon; 19 } 20 public void setWeapon(Weapon weapon) { 21 this.weapon = weapon; 22 } 23 public String getName() { 24 return name; 25 } 26 public void setName(String name) { 27 this.name = name; 28 } 29 public int getAge() { 30 return age; 31 } 32 public void setAge(int age) { 33 this.age = age; 34 } 35 public void print(){ 36 this.setName("name");//调用本类的成员方法,此时this可以省略 37 } 38 }