面向对象:
是相对与面向过程而言的一种编程思想。
面向过程:强调完成功能的过程。
面向对象:关注完成功能的结果。只管哪个对象完成这个功能
将功能封装进对象,强调具备了功能的对象
面向对象是基于面向过程。
思想特点:
是一种符合人们思考习惯的思想
可以将复杂的事情简单化
将程序员从执行者转换成了指挥者
以后在完成任何需求的时候,先找有没有具备这种功能的对象,如果有就用,如果没有就自己写出来,将来还可以方便别人使用。
举例说明:
A:买电脑。
面向过程:了解---->抵达------->找牌子--->查配置单--->付款
面向对象:找懂的人,把钱给他,最后拿电脑
面试举例:
写程序。
如何更好的让我们的程序是面向对象的呢?
分析存在那些类(或者对象)推荐:(UML统一建模语言)名词提取法。
分析每个类可以做什么。
分析类与类之间的关系。
类与对象:
我们学习的编程语言,都是为了把现实世界的事物给描述出来。通过编程语言来模拟现实世界的操作。
现实世界的事物:
外在特征:外在的属性描述
内在的行为:具备的功能
Java语言里的最基本单位是:类。
编程语言里的类:
成员变量(字段,属性):定义在类里边,方法外。
成员方法(函数):不用static修饰的函数
类:是具有相同属性和行为的一类事物的抽象
对象:是该类事物的具体表现形式。具体存在的个体。实例。
怎样才能符合面向对象的思想呢?
分析有哪些类存在
每个类都有哪些成员
类与类的关系
创建类:
首先把该事物用特征和行为体现出来,把该事物转换为java中的类,最后创建对象调用
使用类:
要想使用学生类的成员变量和方法,
步骤
创建对象: 类名 变量名 = new 类名();
使用成员变量和方法: 对象名.变量 对象名.方法名();
注意:在一个java文件里可以定义多个类、这个时候的类名必须和带main方法的类名一致
成员变量和局部变量的区别:
在类中的位置区别:
局部变量:方法中
成员变量:类中,方法外
在内存中的区别:
局部变量:在栈中
成员变量:在堆中:
生命周期的区别:
局部变量:随之方法的调用而存在,随之方法的调用完毕而消失
成员变量:随之对象的创建而存在,随之对象的消失而消失
初始化值的区别:
局部变量:没有初始化值,使用前必须先声明,再赋值,最后在使用
成员变量:都有默认初始化值。
匿名对象:没有名字的对象
用法:
只调用一次方法。匿名对象使用完毕后就是垃圾了。
匿名对象可以作为实际参数进行传递。
成员变量不给值和给值的区别:先走默认初始化然后显示初始化
一般推荐不给显示值,因为只有在类的实例化时才明确成员变量
类是多个相关的属性和行为的抽象。
只有变量是类的外在特征的时候,才可以定义为成员变量。
如果多个范围都适合定义变量,建议永远在小范围,生命周期短,效率高。
案例:‘
/*
注意:类是相关的属性和行为的抽象。
只有变量是类的外在特征的时候,才可以定义为成员变量。
如果多个范围都适合定义变量,该怎么办?
建议永远在小范围。
写一个长方形类,里面有求周长和面积的功能。
然后在测试类中进行测试。
在一个java文件中,import一定优先于class存在。
*/
import java.util.Scanner;
class RectTest {
public static void main(String[] args) {
Rect r = new Rect();
//给长和宽赋值
//r.length = 10;
//r.width = 5;
Scanner sc = new Scanner(System.in);
System.out.println("请输入长方形的长:");
r.length = sc.nextInt();
System.out.println("请输入长方形的宽:");
r.width = sc.nextInt();
int zhouChang = r.getZhouChang();
int area = r.getArea();
System.out.println("该长方形的周长是:"+zhouChang);
System.out.println("该长方形的面积是:"+area);
}
}
class Rect {
//长
int length;
//宽
int width;
//求周长
public int getZhouChang() {
return (length + width)*2;
}
//求面积
public int getArea() {
return length * width;
}
}