----------------------Android培训、Java培训、java学习型技术博客、期待与您交流! ----------------------
面向对象的概念
面向对象其实是一种思考的思想,相对面向过程而言的并基于面向过程,早期的思想是面向过程,通过不断的演化到现在的面向对象。它是一种思想,能让复杂的问题简单化,能让我们的角色转变从执行者变成指挥者。面向过程强调的是功能行为。面向对象是将功能封装进对象,强调具备了功能的对象。提取对象中共性内容,对具体的抽象。
面向对象的优点:对象对数据的封装解决了一直以来操作和数据分离的问题,提高了代码的可重用性和可维护性;数据封装中对公有和私有数据的区分,保护了私有数据,降低了不同木块数据间的干扰,从而降低了程序开发的复杂程度;通过接口可以达到信息隐藏的目的,方便程序的模块化开发;继承,多态等面向对象中强调的特性,使得程序的扩展性得到进一步加强。
以后开发,其实就是找对象使用。没有对象,就创建一个对象。找对象,建立对象,使用对象。维护对象的关系。
类和对象的关系。
现实生活中的对象:轿车,卡车,拖拉机
想要描述:提取对象中的共性内容。对具体的抽象。
描述时:这些对象的共性有:轮胎,颜色。
映射到java中,描述就是class定义的类。具体对象就是对应java在堆内存中用new建立实体。
成员变量和局部变量:
作用范围:成员变量作用于整个类中。
局部变量作用与函数中,或者语句中。
在内存中的位置:成员变量在对内存中,因为对象的存在,才在内存中存在。局部变量:存在栈内存中。
面向对象例子:
/*
需求:描述汽车(颜色,轮胎数)。描述事物其实就是在描述事物的属性和行为。
属性对应是类中变量,行为对应的类中的函数(方法)。
其实定义类,就是在描述事物,就是在定义属性和行为。属性和行为共同成为类中的成员(成员变量和成员方法).
*/
class Car
{
//描述颜色
String color = "红色";
//描述轮胎数
int num = 4;
//运行行为。
void run ()
{
System.out.println(color+"。。"+num);
}
}
class CarDemo
{
public static void main(String[] args)
{
//生产汽车。在java中通过new操作符来完成。
//其实就是在堆内存产生一个实体。
Car c = new Car();//就是一个类类型变量。记住:类类型变量指向对象。
//需求:将已有车的颜色改成蓝色。指挥该对象做使用。在java指挥方式是:对象.对象成员
c.color="blue";
c.run();
Car c1=new Car();
c1.run();
}
}
面向对象的三个特征:封装,继承,多态。
1,封装(Encapsulation):是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
将变化隔离。
便于使用。
提高重用性。
提高安全性。
封装原则:
将不需要对外提供的内容都隐藏起来。
把属性都隐藏,提供公共方法对其访问。
class Person
{
private int age;//封装age年龄数据
void speak()//对外提供访问的数据接口
{
System.out.println("age="+age);//输出年龄数据
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p=new Person();
//p.age=-20;
p.speak();//调用
}
}
2,继承:
例:
class c
{
void demo1(){}
}
class A extends C//A继承C
{
//void demo1(){}
void demo2(){}
}
class B extend c//B继承C
{
//void demo1(){}
void demo3(){}
}
java语言中:java只支持单继承,不支持多继承。
如何使用一个继承体系中的功能呢、?
想要使用体系,先查阅体系父类的描述,因为父类中定义的是该体系中共性功能。
通过了解共性功能,就可以知道该体系的基本功能。
那么这个体系已经可以基本使用了。
那么在具体调用时,要创建最子类的对象,为什么呢?
一是因为有可能父类不能创建对象。
二是创建子类对象可以使用更多的功能,包括基本的也包括特有的。
简单一句话:查阅父类功能,创建子类对象使用功能。
3,多态
多态就是某一类事物的多种存在形态。
例如:
人:男人,女人
动物:猫,狗。
猫 x = new 猫();
动物 x = new 猫();
1,多态的体现
父类的引用指向了自己的子类对象。
父类的引用也可以接收自己的子类对象。
2,多态的前提
必须是类与类之间有关系。要么继承,要么实现。
通常还有一个前提:存在覆盖。
3,多态的好处
多态的出现大大的提高程序的扩展性。
4,多态的弊端:
提高了扩展性,但是只能使用父类的引用访问父类中的成员。
5,多态的应用:
abstract class Animal
{
abstract void eat();
}
class Cat extends Animal
{
public void eat()
{
System.out.println("吃鱼");
}
public void catchMouse()
{
System.out.println("抓老鼠");
}
}
class Dog extends Animal
{
public void eat()
{
System.out.println("啃骨头");
}
public void kanJia()
{
System.out.println("看家");
}
}
class Pig extends Animal
{
public void eat()
{
System.out.println("饲料");
}
public void gongDi()
{
System.out.println("拱地");
}
}
//-----------------------------------------------------
class DuoTaiDemo2
{
public static void main(String[] args)
{
function(new Dog());
function(new Cat());
}
public static void function(Animal a)
{
a.eat();
if (a instanceof Cat)
{
Cat c=(Cat)a;
c.catchMouse();
}
else if(a instanceof Dog)
{
Dog c=(Dog)a;
c.kanJia();
}
}
}
----------------------Android培训、Java培训、java学习型技术博客、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/