目录
面向过程与面向对象的区别
面向过程是直接将解决问题的步骤分析出来,然后用函数把步骤一步一步实现,然后再依次调用就可以了;而面向对象是将构成问题的事物,分解成若干个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在解决问题过程中的行为。
面向过程思想偏向于我们做一件事的流程,首先做什么,其次做什么,最后做什么。
面向对象思想偏向于了解一个人,这个人的性格、特长是怎么样的,有没有遗传到什么能力,有没有家族病史。
一、面向对象概述
1、对象
通常都会将对象分为两个部分:既静态部分和动态部分。
静态部分,顾名思义,就是不能动的部分,这个部分被称之为“属性”,任何对象都具备其自身属性,如一个人,其属性包括高矮、胖瘦、性别、年龄等。然而具有这些属性的人会执行哪些动作也是一个值得探讨的部分,这个人可以哭泣、微笑、说话、行走,这些是这个人具备的行为(动态部分),人类通过探讨对象的属性和观察对象的行为了解对象。
2、类
不能将所谓的一个事物描述成一类事物,有一只鸟不能称为鸟类,如果需要对同一类事物统称,就不得不说明类这个概念.
类是封装对象属性和行为的载体。反过来说,具有相同属性和行为的一类实体被称为类。
3、面向对象程序设计的特点
面向对象程序设计具有以下特点:封装性。继承性。多态性。
(1)、封装
封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。
(2)、继承
类与类之间同样具有关系,如一个百货公司类与销售员类相联系,类之间的这种关系被称为关联。
(3)、多态
上面介绍了继承,了解了父类和子类,其实将父类对象应用于子类的特征就是多态,多态的实现并不依赖具体类,而是依赖于抽象类和接口。
二、类与对象
java中定义类使用class关键字,语法如下:
class 类名称{
//类的成员变量
//类的成员方法
}
1、成员变量
在Java中对象的属性也称为成员变量,成员变量的定义与普通变量的定义一样,语法如下:
数据类型 变量名称 [ =值] ;
2、成员方法
定义成员方法的语法格式如下:
[权限修饰符][返回值类型]方法名([参数类型 参数名])[throws 异常类型]{
…//方法体
return 返回值;
定义一个add方法,用来计算两个数的和,该方法中有两个形参,但在方法体中,对其中的一个形参x执行加y操作,并返回x;在main方法中调用该方法,为该方法传入定义好的实参;最后分别显示调用 add 方法计算之后的x值和实参x的值。
代码如下:
package d6z;
public class Book {//创建类
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
Book book = new Book();//创建Book对象
int x = 30;//定义实参变量x
int y = 40;//定义实参变量y
System.out.println("运算结果:" + book.add(x, y));//输出运算结果
System.out.println("实参x的值:" + x);//输出实参x的值
}
private int add(int x,int y)//计算两个数的和
{
x = x + y;//对x进行加y操作
return x;//返回x
}
}
运行结果:
定义一个change方法,该方法中有一个形参,类型为数组类型,在方法体中,改变数组的索引0、1、2这3处的值;在main方法中定义一个一维数组并初始化,然后将该数组作为参数传递给 change 方法,最后输出一维数组的元素。
代码如下:
package d6z;
public class RefTest2 {//创建类
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
RefTest2 refTest = new RefTest2();//创建对象
int[] i = { 0, 1, 2 }; //定义一维数组,作为方法的实参
//输出一维数组的原始元素值
System.out.print("原始数据:");//输出信息
for (int j = 0; j < i.length; j++)//for循环
{
System.out.print(i[j]+" ");//输出信息
}
refTest.change(i);//调用方法改变数组元素的值
System.out.print("\n修改后的数据:");//输出信息
for (int j = 0; j < i.length; j++)//for循环
{
System.out.print(i[j]+" ");//输出信息
}
}
//定义一个方法,方法的参数为一维数组(形参)
public void change(int [] i)
{
i[0] = 100;//情况1
i[1] = 200;//情况2
i[2] = 300;//情况3
}
}
运行结果:
定义一个add方法,用来计算多个int类型数据的和,在具体定义时,将参数定义为int类型的不定长参数;在main方法中调用该方法,为该方法传入多个int类型的数据,并输出计算结果。
代码如下:
package d6z;
public class MultiTest {//创建类
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
Mu