您的位置:首页 > 职场人生

黑马程序员—面向对象知识汇总

2015-10-11 13:42 267 查看
 -------
android培训java培训、期待与您交流!
----------

我们都知道java是一个面向对象的程序设计语言,但是怎么去理解面向对象这个概念呢?

一、理解面向对象

面向对象是一种思想,面向对象是基于面向过程的。

面向过程:强调的是功能行为。

面向对象:将功能封装进对象,强调具备功能的对象。

面向对象是基于面向过程的

例:向衣柜中装衣服

面向过程:

1.打开衣柜。

2.把衣服放入衣柜。

3.关衣柜门。

面向对象:

1.衣柜.打开。

2.衣柜.放入。

3.衣柜.关闭。

这就是面向对象的思想:复杂的问题简单化。从执行者变成指挥者。

二、类与对象的关系

类:对现实生活中实物的描述 。

对象:就是这些实物。实实在在的个体。

例:

现实中的对象:帕萨特 与 宝马

想要描述:提取对象中共性内容,对具体抽象。

描述时:这些对象的共性有:发动机、排量、马力等。

映射到java中,描述就是定义class类。具体对象就是对应java在堆内存中用new建立实体。

其实描述实物就是在描述实物的属性和行为。

属性对应的就是类中的成员变量。行为就是类中的函数。

定义类,就是在描述事物,就是定义属性和行为。属性和行为共同成为类中的成员

三、面向对象的三个特征

面向对象的三个特征:封装、继承、多态、

1.封装

封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

优点:将变化隔离、便于使用、提高了复用性、提高了安全性

缺点:有了局限性。

原则:将不需要对外提供的内容都隐藏起来。把属性都隐藏,提供公共方法对其访问。

另外注意,封装不是私有,私有仅仅是封装的一种表现形式。

举一个经典的例子。

单例设计模式:

class Single

{

  private Single s = new Single(); //先创建本类对象

private Single(){} //私有构造函数

public Static Single getSingle() //暴露一个公共方法获取对象

{

return s;

}

}

2.继承

继承:就是把多个类中共同需要的东西提取出来做一个类,然后继承这个类。

优点:提高代码的复用性,让类与类之间产生关系。有了这个关系才有多态的特性。

注意:千万不要为了获取其他类的功能,简化代码而继承。必须是有类与类有所属关系才可以继承

继承代码例子:

class Person    //父类提取共有对象

{

String name;

Int Age;

 void sleep()

{

system.out.println("sleep");

}

}

class  Student extends Person //子类继承父类,并有自己的特有功能

{

void study()

{

System.out.println("study");

}

}

class Worker  extends Person//子类继承父类,并有自己的特有功能

{

void work()

{

System.out.println("work");

}

}

class Demo

{

public static void main(String[]  args)//创建子类对象,可以直接使用父类中的方法

{

Student s = new Student();

s.study();

    s.sleep();

}

}

java不支持多继承,即一个子类多个父类,java支持多层继承。

多层继承:

C继承B继承A.

A-------->B-------->C

在具体调用时要创建最子类对象,因为有可能父类不能创建对象。创建子类对象可以使用更过的功能(函数)包括基本的特有的。

总结:查阅父类功能。创建子类对象使用功能

  

3.多态

多态:可以理解为实物存在的多种体现形态。

例:学校 : 高中,大学 。

动物: 猫,狗。

如果在java中表示就是:

既可以 猫 x = new 猫();

也可以 动物 x = new猫();

多态的体现:

父类引用指向子类对象,父类的引用可以接受自己子类的对象。

多态的前提:

必须是类与类之间有关系,要么继承,要么实现。通常还有一个前提需要存在覆盖。

多态的好处:

多态的出现大大提高了程序扩展性。

多态的弊端

虽然提高了扩展性,但是只能是使用父类的引用访问父类的成员。

多态代码例子:

abstract class Animal

{

abstract public void eat();

}

class Cat extends Animal

{

public void eat()

{

sop("吃鱼");

}

public void catchMouse()

{

S.o.p(”抓老鼠“);

}

}

class Dog extends Animal

{

public void eat()

{

sop("吃骨头");

}

public void kanjia()

{

S.o.p("看家");

}

}

class duotai

{

public static void main(String[] args)

{

Animal c = new Cat();

     c.sleep();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java