Java中参数传递问题:
基本类型:形式参数的改变对实际参数没有影响。
引用类型:形式参数的改变直接影响实际参数。
Java中只有值传递,引用类型传递的是地址值。
(没有引用类型传递,引用类型传递的是地址值)
面向对象:
面向对象的概念:
面向过程:面向过程是以函数为基础,完成各种操作。强调的是过程。
面向对象:面向对象是以对象为基础,完成各种操作。强调的是对象,结果。
面向对象是基于面向过程的。
【补充】:c是面向过程的,java是面向对象的。
面向对象的思想特点:
A:是一种更符合人们思考习惯的思想
B:可以将复杂的事情简单化
C:将程序员从执行者转换成了指挥者
面向过程:DIY,因为强调的是过程
面向对象:调用对象的功能,强调的是过程
以后做任何事情:
找对象。让这个对象做事情。
自己造对象,然后用。还可以给别人用。
举例:
孙悟空三打白骨精。
面向过程:
打():
孙悟空,白骨精
面向对象:
孙悟空.打(白骨精)
举例:
买电脑。
面向过程:自己做了所有的事情。
面向对象:田野(中关村卖电脑)
吃饭。洗衣服。
面向过程:买菜,洗菜,切菜,做菜,吃菜,洗盘子...
面向对象:找个对象 -- 让她做了。
旅游:
面向过程:自己查路线,定票,查宾馆,去火车站... 旅游...
面向对象:找个旅行社。...
找工作的例子:
招人示例:
面向过程:
面向对象:
来一个示例,体现一下,面向对象和面向过程的区别?
事情:把大象装进冰箱。
面向过程:
A:打开冰箱门
B:装进大象
C:关闭冰箱门
代码体现:
class 测试类
{
public static void main(String[] args)
{
open();
in();
close();
}
public static void open()
{
System.out.println("打开冰箱门");
}
public static void in()
{
System.out.println("装进大象");
}
public static void close()
{
System.out.println("关闭冰箱门");
}
}
面向对象:
怎么着让我们的操作更符合面向对象思想呢?
A:分析该系统中包含哪些对象?
B:明确每个对象可以做什么?
C:明确各个对象间的关系?
名词--对象;动词--功能(函数)
步骤:
A:有哪些? 名词提取法。-- UML(统一建模语言)
大象
冰箱
测试
B:每个对象有什么?
大象:
in()
冰箱:
open()
close()
测试:
main()
C:测试
测试中调用大象和冰箱的功能。
代码体现:
class 大象
{
public void in()
{
System.out.println("装进大象");
}
}
class 冰箱
{
public void open()
{
System.out.println("打开冰箱门");
}
public void close()
{
System.out.println("关闭冰箱门");
}
}
class 测试类
{
public static void main(String[] args)
{
冰箱对象.open();
大象对象.in();
冰箱对象.close();
}
}
我们学习编程语言,其实就是为了把现实世界的事物通过编程语言给体现出来。
先来研究一下事物:
属性:外在特征
行为:能够做什么
Java语言,最基本的单位是类,类就是用来体现事物的。
类:
成员变量 属性
成员方法 行为
类:是属性和行为的集合。是一个抽象的概念。
对象:就是类的具体的存在,体现。
举例:
学生这个事物 - 类
田野,张三 - 对象
学生事物:
属性:
姓名,年龄,性别...
行为:
学习,吃饭,睡觉...
把事物转换成Java中的类:
学生类:
成员变量:定义在类中,方法外的变量。
姓名,年龄,性别
成员方法:就是函数,先把static去掉。
学习,吃饭,睡觉
我们就用代码体现一下学生这个类。
注意:
我们可以在一个Java文件中,写多个class。
这个文件的名字必须和带有main方法的那个类一致。
你要想使用学生的内容,就首先必须明确你用哪个学生使用的。
如何明确一个类的具体对象呢?通过new造出来。
格式:类名 变量名 = new 类名();
这就表示创建了一个数据类型为类名的变量。
这个变量其实是一个对象。
我要创建一个学生
那么,如何使用这个类中的成员变量和方法呢?
必须通过对象调用。
格式:
成员变量:对象名.成员变量(变量可以赋值)
成员方法:对象名.成员方法(方法是给你用的,不可以赋值)
输出调用必须有返回值;
请自己描述手机这个事物,定义出类,并创建出对象,最终还要有调用。
分析事物:
手机
属性:品牌,价格,颜色...
行为:打电话,发短信,玩游戏
转换成Java中的类:
手机类:
成员变量:品牌,价格,颜色
成员方法:打电话,发短信,玩游戏
用代码体现手机类。
匿名对象:
是没有名字的对象。
应用场景:
A:当对对象方法仅进行一次调用的时
B:匿名对象可以作为实际参数进行传递
成员变量其实是这个类的属性。只有能够用于描述一个类的属性的东西,才可以定义为类的成员变量。
否则,就应该定义为局部变量。
成员变量和局部变量的区别:
A:定义位置:成员变量定义在类中方法外;局部变量定义在方法中或参数列表中
B:初始化值:成员变量有默认初始化值,局部变量没有。
C:存储位置:成员变量存储在堆中,随着对象的消失而消失;
局部变量存储在栈中,随着方法的调用而存在,方法调用完毕就消失
|
|