JAVA入门到精通-第8讲-this类变量

封装、继承、多态、抽象四大特征

多态:一个对象的多种状态,是从继承来的;
软件的可读性和可维护性是密切相关的;

多个age 会造成一定理解上的困难;
所以,带一个this;
这样比较好理解了,this是属于一个对象的;

this----"我的"---代词;
this 是属于一个具体的对象的,而不是属于一个类的;

JAVA虚拟机给每个对象分配一个虚拟机,代表当前对象





this是不能在外面去使用的;
只能 在类定义的 时候去使用;
类变量和类方法:

构造方法(构造函数)就是用来初始化成员变量的;

如果有公共的空间;可以共同的操作;
static int total = 0;

如果加了static,编译器可以准确的理解到total
是属于大家的,而不是属于某个小孩子的;
ch1,ch2,ch3都可访问到 静态变量total;
或者直接用类名也可以访问到静态变量total:

java面向对象编程(2)--this
一个问题?
请大家看一段代码:(Demo112.java)
*重点*:this是属于一个对象,不属于类的。
java虚拟机会给每个对象分配this,代表当前对象。坦白的讲,要明白this不是件容易的事
注意事项:this不能在类定义的外部使用,只能在类定义的方法中使用
x
1
/*2
this的必要性3
*/4
public class Demo112{5
public static void main(String []args){6
Dog dog1=new Dog(2,"大黄");7
Person p1=new Person(dog1,23,"郭德纲");8
Person p2=new Person(dog1,24,"刘谦");9
p1.showInfo(); 10
p1.dog.showInfo();11
}12
}13
//定义一个人类14
class Person{15
//成员变量16
int age;17
String name;18
Dog dog;//引用类型19
public Person(Dog dog,int age,String name){20
//可读性不好21
//age=age;22
//name=name;23
this.age=age; //this.age指this代词指定是成员变量age24
this.name=name; //this.name指this代词指定是成员变量name25
this.dog=dog;26
}27
//显示人名字28
public void showInfo(){29
System.out.println("人名是:"+this.name);30
}31
}32
33
class Dog{34
int age;35
String name;36
public Dog(int age,String name){37
this.age=age;38
this.name=name;39
}40
//显示狗名41
public void showInfo(){42
System.out.println("狗名叫"+this.name);43
}44
}
-------------------------------------------------------------------------------
类变量--提出问题?
提出问题的主要目的就是让大家思考解决之道。
1
public class Demo113{2
public static void main(String []args){3
/* int total=0;4
Child ch1=new Child(3,"妞妞");5
ch1.joinGame();6
total++;7
Child ch2=new Child(4,"小小");8
ch2.joinGame();9
total++;10
*/11
Child ch1=new Child(3,"妞妞");12
ch1.joinGame();13
Child ch2=new Child(4,"小小");14
ch2.joinGame();15
Child ch3=new Child(5,"大大");16
ch3.joinGame();17
System.out.println("共有="+Child.total);18
}19
}20
//定义小孩类21
class Child{22
int age;23
String name;24
//static公共函数,total是静态变量,因此它可以被任何一个对象访问25
static int total=0;26
public Child(int age,String name){27
this.age=age;28
this.name=name;29
}30
public void joinGame(){31
total++;32
System.out.println("有一个小孩加入了");33
}34
}
ch1/ch2/ch3 的输出结果都是3; 共享static静态变量的内存;
浙公网安备 33010602011771号