Java面向对象总结

来源:互联网 发布:数组词多音字组词 编辑:程序博客网 时间:2024/05/17 08:14
类之间的关系
关联关系、继承关系、聚合关系、实现关系、多态关系

JAVA类的定义
成员变量+构造函数+封装方法
成员变量会被默认初始化,局部变量不会默认初始化
变量有四类八种和引用类型(byte,short,int,long,char,float,double,boolean)
编译器默认整数为int,浮点数为double。
Internet默认为0,double默认为0.0,boolean默认为false,char默认为空格。


构造函数
创建对象时,初始化该对象的成员变量。如果自己不写,系统自动提供空构造。构造方法与类名同名,没有返回值,权限自定(权限不同,适用范围不同,要注意继承和多态时构造方法可能会因此出错)。


This关键字
指向当前对象的引用,由JVM维护。一般在类内部使用。


static关键字
static声明的成员变量是静态成员变量,它为该类公用变量,第一次使用时被初始化,所有的该类对象使用同一个。
static声明的类,
static声明的代码块,在类被加载时自动执行,且只执行一次。
非静态块(匿名块)只有在实例化类的对象时才调用,且在构造函数前调用,每实例化一个对象调用一次。 
static还能静态导入(improt static),导入的是某个类的静态方法和静态方法。


package和import语句
打包机制,以防类重名的问题。package语句作为第一条源代码,import在其他包里引入某一包,使用其包内的类的成员和方法(有修饰权限决定是否能使用)。


访问控制权限
四种控制权限,由小到大为private(类内部)、default (默认)(类内部 包内)、protected(类内部 包内 子类)、public(所有地方)


方法的重载
一个类中定义有相同的名字,参数类表不同(类型、数量),调用时由编译器决定,这样的方法构成重载,重载的函数的返回值类型与重载无关,返回值不同不能构成重载。重载的实现技术是符号毁坏(沿用c++),就是给同名的方法重新命名(例如:方法名+参数个数)这样方法名就唯一。


类的继承
JAVA只支持单继承,若要继承多个对象,需要实现接口。继承后需要考虑父类的成员和方法修饰权限。 子类实例化时,可以使用this和super关键字来调用其他函数(父类、子类的)。


方法的重写
同名同参同返回且访问权限不能比父类的访问修饰权限更严格。(3同一权限)重写的技术是动态派发,动态派发的处理,需要专门开辟出一块内存区域存放方法,由JVM负责维护。


super关键字
super关键字用来引用父类的成员和方法,能否引用成功需要权限判定。构造函数中super必须在第一条语句(其他函数不限)。


多态
动态绑定,编译期间不用判断引用的实际类型,运行期间具体决定调用那个类的方法。(对系统可扩充性十分重要)
一般实现步骤:子类继承父类(接口),子类重写父类某一方法,用父类引用指代子类对象(向下转型)调用函数,运行期间JVM会判断对应的子类对象,从而调用对应的方法。


抽象类
抽象类需要用abstract修饰,含有抽象方法的类(不是所有方法)必须声明为抽象类,抽象类不一定含有抽象方法,抽象方法必须重写,抽象类不能实例化,抽象方法只需声明,不用实现。


接口
Internet修饰的类叫接口,接口是一个特殊的抽象类,所有方法都是抽象方法,不能定义成员变量。抽象方法可以不用abstract修饰。注意,接口中可以定义常量(需要赋值)——{static final 类型 常量名=值}。接口中的常量和方法都是public权限的,也只能使public权限(未定义默认public)。
接口的实现使用implements,接口可以相互继承接口,也能被类实现,被类实现时必须重写接口的所有方法。


final关键字
final修饰的变量不能修改,final修饰的方法不能被重写(重载无限制),final修饰的类不能被继承。