------- 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();
}
}