首先说个奇怪的经历,面试老师问我JAVA八大基本数据类型,我可是掰着手指算的8个,当时面试老师给我说你这样肯定落下一个引用,我当时紧张的只能附和说是是是,回来越想越不对,哪里有,我当时以为我看的书是盗版,还是我太笨了。
好了,我们好好说说JAVA面向对象三大特性,当时我前面的考生就说被面到这个问题了。
继承
何为继承,表现形式:继承已存在的类就是复用类的方法和域,在此基础上,还可以添加一些新的方法和域,满足新的需求。
怎们判断两个类是否能构成继承关系:is-a的关系
子类 extends 父类
有些规则:
1.子类无法访问父类的私有域
2.子类如果想初始化父类的私有域,可以调用父类的带参构造函数
3.可以用子类初始化父类变量
注:this和super
this有两个用处:1.引用隐式参数 2.调用该类的其他的构造器
super的两个用处:1.调用超类的方法 2.调用超类的构造器
多态
一个父类变量,既可以引用父类的初始化对象,也可以引用子类的初始化对象,称之为对象变量是多态的。
多态中最重要的一个体现:就是动态绑定
如果方法是private,static ,final 或者构造器,那么编译器将可以准确地知道应该用哪个方法,我们将这种方式称为静态绑定。
如果调用方法将依赖于隐式参数的实际类型,并且在运行时动态绑定,称之为动态绑定。
动态绑定:
1.重载:编译器调用方法时是根据所提供的参数的类型,例如:sum调(float a,float b),sum(int a,int b),
2.还有一种也可以称为动态绑定,如果子类和父类都有getId()方法,则会分别调用各自类中的方法;
封装
方法和属性组成了类,这就是封装