黑马程序员_Java基础_03面向对象思想(对象转型注意事项、多态、抽象类、final关键字等)

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

一、对象转型注意事项
1、一个基类的引用类型变量可以“指向”其子类的对象。
2、一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。
3、可以使用引用变量instanceof 类型来判断该引用类型变量所“指向”的对象是否属于该类或者该类的子类
4、子类对象可以当做基类对象来使用称为向上转型(upcasting),反之称为向下转型(downcasting) 

二、多态
          动态绑定是指在执行期间(而非编译期间)判断所引用(所new)对象的实际类型,根据其实际的类型调用其方法
          多态实现的要求:
          1、要有继承
2、要有重写 
3、父类对象指向子类引用

三、abstract 类
用abstract关键字修饰一个类时,这个类叫做抽象类:用abstract来修饰一个方法时,该方法叫做抽象方法
含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写,抽象类并不是所有方法都是抽象方法
抽象类不能实例化
抽象方法只需声明,不需要实现,例如: public void run() 

四、final关键字
final 修饰的变量值不能被改变
        final 成员变量与final局部变量都是不能改变
final方法不能被重写
final的类不能够被继承




面向对象:
面向对象和面向过程思想: 面向对象强调的是对象实例; 面向过程强调的是动作; 对象将动作进行封装。 
在问题领域中,我们先去找的都是涉及的对象, 然后分析对象的属性和行为。 
面向对象的特点:
是一种常见思想。
复杂变简单。
执行者变指挥者。
举例:面试的例子。
类与对象的关系:
类:就是对事物的描述,其实类就是将对象共性的内容进行抽取。
对象:就是该类事物实实在在存在个体,在java中通过new来完成创建的。
堆内存的对象主要用于封装对象中的特有数据。
类中的成员:
成员变量:事物的属性,
成员函数:事物的行为。
成员变量和局部变量的区别:
成员变量使用时需要建立该类对象,并通过 "对象.对象成员" 就可以完成调用,静态局部变量除外
封装:
隐藏实现细节,并对外提供公共的访问方式。
一般将实现细节通过类的函数进行封装。
 特点:
 1、隔离的变量。
 2、便于使用。
 3、提高复用。
 4、提高安全性。

 封装体现:成员变量私有化
 私有在源代码中的使用就是在本类中有效。
 通常会将成员变量xxx私有化,并对外提供对应的setXxx getXxx方法对其进行访问。
 其实目的就是成员变量访问进行控制。 让成员的访问具备可控性,提高了程序的健壮性。
 另外需要注意:私有仅仅是封装的体现形式之一而已,还有很多封装体现,比如说常用设计模式

构造函数
写法特点:
1、函数名和类名相同。
2、不需要定义返回值类型
3、没有具体的返回值。 但是有return语句,用于结束构造函数。
 使用特点:
 1、定义类中,有默认的空参数构造函数。如果已经自定义,那么默认就没有了。
 2、构造函数在类有多个,是重载形式体现出来的。
 
 构造函数的作用:
 用于给对象进行针对性的初始化。
 构造函数和一般函数的区别:
 1、构造函数与类名同名且大小写必须一致,一般函数不需要
 2、 构造函数无返回值类型,也不需要加void,一般函数则不行,要么有函数返回至类型,要么为void类型
 3、 构造函数在对象创建生成时调用,一般函数在对象使用时调用
 什么时候使用构造函数呢?
 当对象创建时就需要一些内容(数据和行为),那么这些内容都定义在构造函数中。
 
this关键字:
 this:代表的是对象。哪个对象调用了this所在的函数,this就代表哪个对象。
 
 用法体现 :
 1、当成员变量和局部变量同名时,可以用this区别。
 2、当构造函数中调用本类其他构造函数时,可以用this完成。 this(实际参数);
   这种调用必须定义在构造函数的第一行。初始化动作先完成。
 应用:只要在定义功能时,用到了本类对象,那么就使用this来表示。
static关键字:
特点: 
 1、修饰成员。
 2、随着类加载,随着类消失。
 3、优先于对象。
 4、用类名直接访问

使用注意事项:
 1、静态方法只能访问静态,静态有访问局限性。
 2、静态方法中不能有this super关键字。
 3、主函数是静态的。

静态变量和成员变量的区别: 
 1、创建类对象之后,才能使用成员变量,静态变量不需要创建类对象,直接使用“类.静态变量”
 2、静态变量可以为多个对象共享,成员变量为对象独享
 3、静态变量通过可以以 "类名.变量名", "对象名.变量名"方式访问,成员变量只能以 "对象名.变量名"方式访问  。
 4、 静态变量的一个重要作用是当作同类 各个对象之间传递信息使用,类似于C语言中的全局变量。成员变量则不可
注意:接口中的变量都是静态常量 ,隐式地已经有了public static final.

 什么时候使用静态:
 1、当成员变量的数据各个对象都相同时,可以用static修饰,让多个对象共享。
 2、函数如果访问了特有数据(非静态成员变量),该函数是非静态的;函数如果没有访问特有数据,那么该函数就可以静态修饰。
 
如果类中的功能都是静态的,那么该类创建对象是没有意义的,所以构造函数需要私有化。

代码块:
 1、局部代码快。
 对局部变量的生命周期进行控制。
 2、构造代码块。
 对所有对象进行初始化。
 3、静态代码块。
 对类进行初始化。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值