------- 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、静态代码块。对类进行初始化。