面向对象
两大元素:
类
对象
类与对象的关系
类即类型,在java中用class表示。
如人、动物、桌子、电脑、学生、老师
对象即某一类型物质的一具体存在,在java中用Object表示。
如人类中有:诸葛亮、张三丰、宋祖英
类
命名规范
类表示的是一种类型,所以应用名词来表示
属性表示的是一种状态,用名词
方法表示的是能做什么,用动词
类名首字母应大写,如Animal, Human
属性和方法首字母小写,如age, think
当出现两个或以上的单词时,第二个单词首字母总是大写,如类名:BankAccount或方法名:fetchMoney
对象
类表示的是一种类型,如人类,而对象则是这种类型的一个具体存在,比如说“傻根”。人类是没有具体年龄的,也不能去思考什么,人类只能定义它的对象有年龄,它的对象可以思考,“傻根”有年龄,也可以去思考。
可以说类是设计对象的蓝图,是生成对象的模板
假设有一个类“人”:
class 人{
int age;
void think(){}
}
我们就可以依据这个“人”这个类来定义对象,如:人 傻根;
对象的创建
语法为:类型 对象名 = new 构造方法名()
如: 人 小李子 = new 人();
new操作符将会在内存中分配一块空间,这块空间保存小李子代表的对象的状态,如小李子的年龄,性别,联系方式等。
当然小李子到底可以有哪些状态由人这个类来决定。
类的构造方法
构造方法可以有参数,如
class 人{
int age;
public 人(int a){
age = a;
}
}
人 x = new 人(); //错误,缺省的方法不再存在
人 x = new 人(10); //正确,x对应的对象具有初始的age == 10;
人 x = new 人(20); //正确,x对应的对象具有初始的age == 20;
对象的使用
class 人{
int age;
void think(){}
}
人 x = new 人();
x.age = 20; //访问对象的属性
x.think(); //访问对象的方法
语法:对象名.属性名 和 对象名.方法名()
属性的封装
class 人{
peivate int age;
void setAge(int a){ age = a; }
int getAge(){ return age;}
}
我们通过set/get方法来访问age属性,而不是直接通过“对象名.age”来访问,这种特性称为封装
对象数组
对象数组
String args[] = new String[2];
这里定义了args数组,数组中每一个元素为字符串对象,数组初始化后
args[0] == args[1] == null
同样,我们可以定义每个元素为人对象的数组
人 r[] = new 人[2];
其创建格式与字符串数组是完全相同的,数组中的每一个元素此时同样均为null
对象数组
人 r[] = new 人[2];
可以用如下方式初始化数组中的元素:
r[0] = new 人();
r[1] = new 人();
初始化后就可以正常访问了:
r[0].age = 20;
System.out.println(r[0].age);