类与对象
OOP(Object Oriented Programming)
例子:小明现在手头上有两本书,一本是英语书,一本是数学书,如果用程序来表达这两本书,该如何编写?
在没有引入OOP之前
通过基本变量
Stringbook1Name="英语";
intbook1Page=100;
StringbookColor="白色";
Stringbook2Name="数学";
intbook2Page=200;
StringbookColor="橙色";
//假如小明有很多本书,则.....
StringbookNName......
intbookNPage.......
StringbookNColor......
//如果使用变量来保存的话,就会产生很多基本类型的变量代码,这样非常不利于数据的管理
通过数组
String[]book1={"英语",100,"白色"};
String[]book2={"数学",200,"橙色"};
.......
//同理,如果要定义很多本书的话,我们就得利用大量的数组来代表每一本书
弊端
1、数据类型不能很好的体现
2、只能通过下标来获取信息,对变量的名字和数据的对应关系不是很清晰,不友好
3、不能增加书本的动态行为,比如翻书等动作
那么,现有的技术方案对于新的问题来说不是那么友好的时候,就诞生了面向对象这个技术。其实面向对象也不是什么高深的技术,就是为了解决新问题找到最优解,从而提出的一种新方案。
引入面向对象(OOP)以后
对象,顾名思义,就是一个具体存在的事物,它拥有自己的属性和行为。
属性:体现的是静态方面的数据
行为:表示的是动态方面的动作
如果把所有书本的共性抽取出来,那么我们就得到了一个书本类,Book。
抽取共性(属性) -------> 书本类(属性+行为) --------> 具体的书籍,英语课本,数学课本(实例)
来看一个例子
intnum1=100;
Stringcolor="白色";
Bookbook1=newBook();
Bookbook2=newBook();
通过对比以上语句,可以推出,
类:其实就是程序员自己定义的数据类型
int、String:是Java程序内置的数据类型
//定义一个书本类
classBoook() {
Stringname;
intpage;
Stringcolor;
}
publicclassTest{
publicstaticvoidmain(String[]args) {
Bookbook1=newBook();
book1.name="英语";
book1.page=100;
book1.color="白色";
Bookbook2=newBook();
book2.name="数学";
book2.page=200;
book2.color="橙色";
.....
}
}
类与对象的关系
提取书本共性 ----> 书本类(属性...)、(行为......) ----> 具体的书本 数学、英语
提取人类共性 -----> 人类(属性....)、(行为.......) -----> 具体的人 张三、李四
注意事项
1、类创建对象有很多种说法,实例化、创建对象、类实例化
2、类可以有很多种,世界万物,都可以抽取共性成为类
类和对象在内存中的关系
当类创建对象的时候,在内存中的关系大致如图所示。
领取专属 10元无门槛券
私享最新 技术干货