黑马程序员-------java面向对象部分

来源:互联网 发布:网络备份服务器 编辑:程序博客网 时间:2024/06/05 06:02

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

面向对象

面向对象是相对面向过程而言的。面向对象和面向过程都是一种思想。

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

面向对象:将功能封装进对象,强调具备了功能的对象。面向对象是基于面向过程衍变而来的。

面向对象的三个特性:封装,继承,多态。

封装:封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚、低耦合”,防 止程序相互依赖性而带来的变动影响。

继承:在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内 容作为自己的内容,并可以加入若干新的内容,或修改原来的方法使之更适合特殊的需要。

多态:多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编译时并不确定,而 是在程序运行期间才确定。

类和对象的关系:类就是对现实生活中事物的描述。对象就是这类事物实实在在存在的个体。类与对 象的关系可以理解为图纸与汽车的关系。类就是图纸,汽车就是堆内存中的对象。
想要描述现实生活中的对象就是提取对象中的共性内容,对具体的抽象描述。描述在java当中是用类 的形式体现的。而对象在java当中是通过new操作符而产生的一个实体,该实体在堆内存中。
映射到java中:描述就是class定义的类。 具体的对象就是所对应java在堆内存中用new建立的实体。

描述事物就是描述它的属性和行为。属性对应的是类中的变量,行为对应的是类中的函数。定义类就是在描 述事物,就是在定义属性和行为,属性和行为统称为类中的成员(成员变量和成员函数)。


     思考一下:软件公司为什么要找软件员去干活?
               面试官问什么叫面向对象:
1 说一下面向对象的特点:它是一种思想,强调具有功能的对象,它能让事情变得简单,让人从执行者变成指挥者。
2 结合实际场景说一下:其实面试官你就在使用面向对象的思想在做事情,您需要具备专业编程能力的人来帮你完成公司的事情,我就是那个具备专业编程能力的对象,您就在使用我的功能在为公司创造价值 3 找一个具备专业功能的对象,来帮自己完成事情

代码演示:

代码里面提及的名词在这里做一下具体的讲解。

成员变量和局部变量。
作用范围
成员变量作用于整个类中。 局部变量作用于函数中或者语句中。
在内存中的位置。
成员变量在堆内存中,因为对象的存在才在内存中存在。 而局部变量存在于栈内存中。

匿名对象:

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

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

abstract修饰符:

1、修饰类:会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以作为对象变量声明的类型,也就是编译时的类型。抽象类需要子类继承并覆盖其中的抽象方法。如果子类没有实现父类的抽象方法,那么子类也为抽象类。

2、修饰方法:会使这个方法变成抽象方法,也就是只有声明而没有实现,实现部分以";"代替,需要子类继承实现。

注:

1、有抽象方法的类一定是抽象类,但是抽象类中不一定都是抽象方法,也可以是具体方法。

2、abstract和final不能同时使用,abstarct修饰方法和类,就是想让别人重写或者是继承的,而final是组织重写和基础的。private和abstract也不能同时修饰,因为private组织继承,也就阻止了重写实现,与abstract相违背。


代码演示:


内部类:内部类是指在一个外部类的内部再定义一个类,内部类作为外部类的一个成员,并且依附外部类而存在。内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限)。内部类主要有:成员内部类,局部内部类,静态内部类,匿名内部类内部类的访问规则:
1 内部类可以直接访问外部类中的成员,包括私有。
  之所以可以直接访问外部类中的成员,是因为内部类中持有外部类的引用   格式:外部类名.this
2 外部类要访问内部类,要建立内部类对象。


访问格式:
当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中,
直接建立内部类对象。
格式
外部类名.内部类名 变量名=new 外部类名().new 内部类名()




2 当内部类在成员位置上,就可以被成员修饰符所修饰。
   比如,private:将内部类在外部类中进行封装。
         static:内部类就具备static的特性。
当内部类被静态修饰后,只能直接访问外部类中的静态成员。出现了访问局限。
 在外部其他类中,如何直接访问内部静态类的非静态函数呢? 
new 外部类名.内部类名()。函数民();
在外部其他类中,如何直接调用内部静态类的静态函数呢?
外部类名.内部类名.函数名();
静态的话 可以由类名调用
但是非静态的话,必须由对象调用。
注意:当内部类中定义了静态成员,该内部类必须是静态的。
只能是 静态类 静态函数
静态类 非静态函数 
不嫩是非静态类 静态函数。。类是指内部类,外部类无法用静态修饰。。
当外部类的静态方法访问内部类时,内部类也必须是静态的。


描述事物时,该事物还有事物,该事物用内部类来描述。
因为内部事物在使用外部事物中的内容。

1、成员内部类:作为外部类的一个成员存在,与外部类的属性和方法并列。

2 内部类定义在局部时, 1 不可以被成员修饰符修饰
2 可以直接访问外部类中的成员,因为还持有外部类中的引用。但是不可以访问它所在额局部中的变量,只能访问被final修饰的参数。


3 匿名内部类 1.匿名内部类就是内部类的简写格式。
    2.定义匿名内部类的前提:内部类必须继承一个类或者实现接口。
    3.匿名内部类的格式:new父类或者接口()
{
定义子类的内容
}
   4.其实 匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。
   5.匿名内部类中定义的方法最好不要超过三个。


0 0
原创粉丝点击