黑马程序员 04 面向对象_继承_抽象_多态

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

面向对象

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

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

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

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

    在Java的世界中,“万物皆对象”!


面向对象的特点: 

这是一种符合人们思考习惯的思想,可以将复杂的事情简单化,将程序员从执行者转换成了指挥者。

完成需求时,先要去找具有所需的功能的对象来用。如果该对象不存在,那么创建一个具有所需功能的对象。这样简化开发并提高复用。


面向对象开发,设计,特征:


 

开发的过程:其实就是不断的创建对象,使用对象, 指挥对象做事情。 

设计的过程:其实就是在管理和维护对象之间的关系。

特征:

         封装(encapsulation)

         继承(inheritance)

         多态(polymorphism)




封装
(1)隐藏实现的细节,提供公共的访问方式。
类,方法等其实都是封装的具体体现。
(2)private关键字
A:用于修饰成员变量和成员方法。
B:被修饰的内容在其他类中是不可以被访问的。
(3)常见的应用:(掌握)
类中的所有成员变量私有,给出对应的get/set方法。
成员变量和局部变量的区别
(1)定义位置区别:
成员变量:定义在类中,方法外。
局部变量:定义在方法中,或者方法声明上。
(2)初始化值的区别:
成员变量:都有默认初始化值。
局部变量:没有默认初始化值。要想使用,必须先赋值。
(3)存储位置区别:
成员变量:存储在堆中。
局部变量:存储在栈中。
(4)生命周期区别:
成员变量:随着对象的创建而存在。随着对象的消失而消失。
局部变量:随着方法的调用而存在,随着方法调用完毕而消失。


构造方法
(1)格式及特点
格式:
访问权限修饰符 类名(参数...){}


访问权限修饰符:
public,private
特点:
A:方法名和类名相同
B:没有返回值类型
C:没有具体的返回值
(2)注意事项:
A:如果你不给构造方法,jvm会自动给你一个无参构造方法。
B:如果你给出了构造方法,那么,jvm将不再提供无参构造方法。
  这个时候,你如果要使用无参构造方法:只能自己提供


  推荐:永远手动给出无参构造方法。


4:this关键字
(1)是一个关键字。代表当前类的对象引用。
在方法中,哪个对象调用方法,this就代表谁。
(2)应用场景:
解决局部变量隐藏成员变量问题。


5:static关键字
(1)是一个关键字。可以修饰成员变量和成员方法。
(2)静态的特点:
A:随着类的加载而加载
B:优先于对象存在
C:被类的所有对象共享
D:可以通过类名调用
(3)静态的注意事项:
A:在静态方法中是没有this关键字的。
B:静态方法只能方法静态的成员变量和静态的成员方法。
(4)静态内容的调用:
A:被对象调用
B:被类名调用



继承


    多个类中存在相同属性和行为时,将这些内容抽取到 单独一个类中,那么多个类无需再定义这些属性和行为,只要继承单独的那个类即可。

    多个类可以称为子类,单独这个类称为父类或者超 类。

    子类可以直接访问父类中的非私有的属性和行为。

    通过extends 关键字让类与类之间产生继承关系。

 class SubDemo extends Demo{   }

   继承的出现提高了代码的复用性。继承的出现让类与类之间产生了关系,提供了多态的前提。

 

 

继承的特点:

 

  Java只支持单继承,不支持多继承。

          一个类只能有一个父类,不可以有多个父类。

          class SubDemo extends Demo{} //ok

          class SubDemo extends Demo1,Demo2...//error

 

  Java支持多层继承(继承体系)

          class A{   }

          class B extends A{   }

          class C extends B{   }

 

    定义继承需要注意:

          不要仅为了获取其他类中某个功能而去继承

          类与类之间要有所属("is a " )关系,xx1是xx2的一种。


Java语言中:java只支持单继承,不支持多继承。

 

抽象

    抽象定义:

          抽象就是从多个事物中将共性的,本质的内容抽取出来。

          例如:狼和狗共性都是犬科,犬科就是抽象出来的概念。

 

    抽象类:

          Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。

 

    抽象方法的由来:

          多个对象都具备相同的功能,但是功能具体内容有所不同,那么在抽取过程中,只抽取了功能定义,并未抽取功能主体,那么只有功能声明,没有功能主体的方法称为抽象方法。


   抽象类的特点:


    抽象类和抽象方法必须用abstract关键字来修饰。抽象方法只有方法声明,没有方法体,定义在抽象类中。

    格式:修饰符abstract返回值类型函数名(参数列表) ;

    抽象类不可以被实例化,也就是不可以用new创建对象。原因如下:

    抽象类是具体事物抽取出来的,本身是不具体的,没有对应的实例。例如:犬科是一个抽象的概念,真正存在的是狼和狗。

    而且抽象类即使创建了对象,调用抽象方法也没有意义。

    抽象类通过其子类实例化,而子类需要覆盖掉抽象类中所有的抽象 方法后才可以创建对象,否则该子类也是抽象类。


   总结:

    抽象类和一般类没有太大的不同,该如何描述事物,就如何描述事物,只不过,该事物出现了一些看不懂的东西。这些不确定的部分,也是该事物的功能,需要明确出现。但是无法定义主体。通过抽象方法来表示,抽象类比一般类多个了抽象函数,就是在类中可以定义抽象方法。

    抽象类不可以实例化。

    特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。



多态

 

定义:某一类事物的多种存在形态。

体现:父类或者接口的引用指向或者接收自己的子类对象。

作用:预先定义的程序可以运行后期程序的内容。增强了程序的扩展性。和后期可维护性。

多态的弊端:虽然可以预先使用,但是只能访问父类中已有的功能,运行的是后期子类的功能内容,不能预先使用子类中定义的特有功能。

前提:需要存在继承或者实现关系 要有覆盖操作。

 多态的应用

           instanceof :用于判断对象的类型,对象 intanceof类型(类型接口类型)

 

接口


当接口初期理解,可以认为是一个特殊的抽象类,

当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表现。

Class:用于定义类;Interface:用于定义接口。


接口定义时,格式特点

1.接口中常见定义,常量,抽象方法。

2.接口中的成员都有固定修饰符。常量:publicstaticfinal方法:publicabstract

接口中的成员都是public的。


接口不可以创建对象,因为有抽象方法,需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是一个抽象类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值