黑马程序员--Java基础--01面向对象

来源:互联网 发布:淘宝网页版登陆 编辑:程序博客网 时间:2024/05/20 06:30

----------------------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,继承:
1,提高了代码的复用性。
2,让类与类之间产生了关系。有了这个关系,才有了多态的特性。
注意:千万不要为了获取其他类的功能,简化代码而继承。必须是类与类之间有所属关系才可以继承。所属关系:is a

例:

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只支持单继承,不支持多继承。
因为多继承容易带来安全隐患:当多个父类中定义了相同功能。
当功能内容不同时,子类对象不确定要运行哪一个。
但是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/

0 0
原创粉丝点击