提纲:
1)this是什么意思
2)类的构造函数和属性的访问
3)类的成员变量
4)类的访问控制(private, public)
一、this是什么意思
在第一篇文章中,各种set/get方法里面都用到this.
这个this,指的就是这个类本身,所以this.name就是这个类里面的name属性
举一反三,如果写:this.sayHi();,就是调用本类里面的sayHi这个方法
二、类的构造函数和属性的访问
(1)类的构造函数
类的构造函数:本质上就是一个函数(方法),是用来创建类的实例的函数
如前面Person这个类,在创建它的实例时,使用了 new Person();
这实际上就是使用了名字为Person()这样的一个函数
你可能发现,Person这个类里面明明没有看到这个函数呀?
这是因为,任何一个类,默认都隐含着存在一个与类名字一样,且没有参数的构造函数
你也可以明确写出来这个构造函数,并在里面写上所有你希望这个类的实例默认有的一些东西。
public class Person{
//以下都是属性。(是名词)
private String name;//姓名
private int age;//年龄
private String sex;//性别
private String favorite;//喜好
public Person(){
this.name = "米老师";
this.age = 40;
this.sex = "男";
this.favorite = "美女,而且胸要大,皮肤要白";
}
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
//下面的代码就不再重复写了,就是第一章中Person.java里面的代码
}
public class RunClass{
public static void main(String[] arg){
RunClass runClass = new RunClass();
runClass.makePerson();
}
//这也是一个方法
public void makePerson(){
//根上一章中的RunClass相比,这次的代码中,没有写set方法
//创建了Person实例后,直接调用了sayHi方法。
//运行一下看看结果,思考一下构造函数的作用。
Person onePerson = new Person();
onePerson.sayHi("helen");
}
}
public class Person{
//以下都是属性。(是名词)
private String name;//姓名
private int age;//年龄
private String sex;//性别
private String favorite;//喜好
public Person(){
this.name = "米老师";
this.age = 40;
this.sex = "男";
this.favorite = "美女,而且胸要大,皮肤要白";
}
public Person(String name){
this.name = name;
this.sayHi(name);
}
public Person(String name, int age, String sex){
this.name = name;
this.age = age;
this.sex = sex;
this.favorite = "我这个人没有什么爱好";
}
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
}
在Person中增加了两个新的构造函数,试着到RunClass中
分别用这个两个新的构造函数去创建Person的实例,看看运行结果是什么,想想为什么
-------------------------------------------------------------------------------
| 休息10分钟,做几个瑜伽动作,再回来看下面的内容 |
-------------------------------------------------------------------------------
(2)属性的访问
前面已经说过了,类的属性是什么。
那么如何为属性赋值?如果得到属性的值是什么?
想想Person类中代码,有一堆的 set / get 开头的方法
而且,这些set/get后面都是每个属性变量的变量名,且首字母大写
这就是在JAVA中,访问属性的方式:
1)为每个属性定义一个set方法和一个get方法,且方法名的set/get后面是属性变量名(首字符大写)
2)创建了类的实例后,通过这两个方法,分别给属性赋值、获取属性的值。
三、类的成员变量
所谓类的成员变量,其实就是类的属性的另一种叫法
以Person这个类为例
他有四个属性:name, age, sex, favorite
也就是说,他有四个成员变量,分别是:name, age, sex, favorite
其实
“成员变量和成员函数”是C++语言里面的习惯叫法
“属性和方法”是JAVA语言里面的习惯叫法
这个世界的程序员们,以及各种书籍中,总是随意的交叉着叫着这些名字
四、类的访问控制
这里,先讲两个:private, public
在Person这个类里面,可以看到,定义属性的时候,起头的单词是:private
而定义方法的时候,起头的单词是:public
字面翻译:
private:私有的
public:公开的
也就是说,通过这个关键字,定义类里面的属性或方法以怎样的形式在代码中被访问。
一个类被实例化以后(就是 new Person() )
只有public的东西才能被访问到,而private的东西是不能用的。
试着给Person中增加一个public的属性:地址,再增加一个private的方法:介绍自己
然后在RunClass中分别去访问他们,看看运行结果是什么。
》》》》》》》》下一课的内容:
类的继承、方法的重载
(讲完这个,所有该知道的基本知识就差不多了)