黑马程序员_面向对象

------- android培训java培训、期待与您交流! ---------- 

 

面相对象

1.理解:面相对象是基于面相过程的,是一种思想,是将功能封装进对象,强调具备了功能的对象。

特点:可以将复杂的事情简单化;完成需求时,先要找到具有所需功能的对象,如果对象不存在,那么创建一个就有所需功能的对象,这样就简化开发提高复用。

开发过程:其实就是不断的创建对象,使用对象,指挥对象做事情。

设计过程:其实就是在管理和维护对象之间的关系。

面相对象的特征:封装(encapsulation)继承(inheritance)多态(polymorphism

示例:

人开门:名词提炼法。

{

       开门(门)

       {

              .();

       }

}

{

       (){操作门轴等}

}

2.类与对象的关系

使用计算机语言就是不断的描述现实生活中的事物;事物通过类的形式体现,类是具体事物的抽象,概念上的定义。对象即是该类事物实实在在存在的个体。

类的定义:生活中描述事物无非就是描述事物的属性和行为。

Java中用类class描述事物,属性:对应类的成员变量。行为:对应类中的成员函数。

定义类其实在定义类中的成员(成员变量和成员函数)

3.成员变量和局部变量的区别

成员变量:定义在类中,在整个类中都可以被访问;

               随着对象的建立而建立,存在于对象所在的堆内存中;

               有默认初始化值。

局部变量:只定义在局部范围内,如:函数内,语句内等;

               存在于栈内存中;

               作用的范围结束,变量空间会自动释放;

               没有默认初始化值。

基本数据类型参数传递:

classDemo

{

       public static void main(String[] args)

       {

              int x = 4;//没有在堆内存中开辟空间

              show(x);

              System.out.println(x);

       }

       public static void show(int x)

       {

              x = 2;//存在于栈内存中,没有对应的对象,变量空间会自动释放。

       }

}

引用数据类型传递

classDemo

{

       int x = 3;

       public static void main(String[] args)

       {

              Demo d = new Demo();

              d.x = 10;

              show(d);//show(new Demo());在堆内存中产生一个新的对象

              System.out.println(d.x);

       }

       public static void show(Demo d)

       {

              d.x = 6;//给堆内存的对象赋值,并释放空间。

       }

}

数组类型参数传递

classDemo

{

       public static void main(String[] args)

       {

              int[] arr = new int[2];//一维数组在堆内存中包含两个元素a[0],a[1];

              show(arr);

              System.out.println(arr[0]);

       }

       public static void show(int[] arr)

       {

              arr[0]++;//给堆内存a[0]赋值,并释放空间。

       }

}

4.匿名对象

匿名对象使用方式一:当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化。如果对一个对象进行多个成员调用,必须给这个对象起个名字。

匿名对象使用方式二:可以将匿名对象作为实际参数进行传递。

 

示例:汽车修配厂。对汽车进行改装,将来的车改成黑车,三个轮胎。

class  CarDemo

{

       public static void main(String[] args)

       {

//生产汽车。在java中通过new操作符来完成。其实就是在堆内存产生一个实体。

              Car c = new Car();//c就是一个类类型变量。记住:类类型变量指向对象。

              show(c);//show(new Car());

}

public static void show(Car c)

       {

              c.num = 3;

              c.color = "black";

              c.run();

       }

}

class Car

{

       String color = "红色";

       int num = 4;

       void run()

       {

              System.out.println(color+".."+num+"开跑了!");

       }    

}

5.面相对象设计思想

需求:球从一根绳子的一端移动到了另一端

classRope

{

       private Point start;

       private Point end;

       public Rope(Point start,Point end)

       {

              this.start=start;

              this.end = end;

       }

       public Point nextPoint(PointcurrentPoint)

       {

              /*

              通过两点一线的数学公式可以计算出当前点的下一个点,这个细节不属于设计阶段要考虑的问题,如果当前点是终点,则返回null,如果当前点不是线上的点,则抛出异常。

              */

              return null;

       }

}

classBall

{

       private Rope rope;

       private Point currentPoint;

       public Ball(Rope rope,Point startPoint){

              this.rope = rope;

              this.currentPoint = startPoint;

       }

       public void move()

       {

              currentPoint =rope.nextPoint(currentPoint);

              System.out.println("小球移动到了"+currentPoint);

       }

}

------- android培训java培训、期待与您交流! ---------- 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值