存在问题:

  1. public class Main {
  2. public static void main(String[] args) {
  3. Dog dog = new Dog("小黑",12);
  4. dog.dy();
  5. }
  6. }
  7. class Dog{
  8. String name;
  9. int age;
  10. //构造器的形参直接写成属性名
  11. //根据变量的作用域原则
  12. //构造器的name是局部变量,而不是属性
  13. //构造器的age是局部变量,而不是属性
  14. //解决方法=》this关键字
  15. public Dog(String name, int age){//构造器
  16. name = name;
  17. age = age;
  18. }
  19. public void dy(){
  20. System.out.println(name + " " + age);
  21. }
  22. }

image.png

简介:

java虚拟机会给每个对象分配this,代表当前对象。
this解决重名问题。

解决问题:

  1. public class Main {
  2. public static void main(String[] args) {
  3. Dog dog = new Dog("小黑",12);
  4. dog.dy();
  5. }
  6. }
  7. class Dog{
  8. String name;
  9. int age;
  10. //构造器的形参直接写成属性名
  11. //根据变量的作用域原则
  12. //构造器的name是局部变量,而不是属性
  13. //构造器的age是局部变量,而不是属性
  14. //解决方法=》this
  15. public Dog(String name, int age){//构造器
  16. //this.name就是当前对象的属性name
  17. this.name = name;
  18. //this.age就是当前对象的属性age
  19. this.age = age;
  20. }
  21. public void dy(){
  22. System.out.println(name + " " + age);
  23. }
  24. }

image.png

小结:

哪个对象调用,this就指向哪个对象。