面向对象三个基本特征:重载继承多态
Posted scanner小霸王
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象三个基本特征:重载继承多态相关的知识,希望对你有一定的参考价值。
1.重载:同个类中:方法同名,形参列表不一致
a)方法名一样
b)(参数类型或个数或顺序,至少有一个不同,参数名无要求)
c)返回类型不要求
2.可变参数
a)例子:求和
方法定义:
方法调用:
b)注意:
1)普通参数与可变参数一起使用时候,可变参数只能放在最后面
2)可变参数,一个方法只能有一个
3作用域:
a)全局变量可以不赋值,直接使用,因为有默认值;
局部变量必须赋值后才能使用,因为没有默认值;
b)局部变量和全局变量可以重名,遵守就近原则
c)(全局变量)属性可以加修饰符(public,protected,private…);
局部变量不能加修饰符;
4.构造器:
注意:没有返回值,也不能写void
5.对象创建流程分析
当 Peson p = new Person(“小青”,20)发生什么事情
构造器是完成数据的初始化
1)在栈中有对象的引用,在堆中开辟一个空间存真正的对象(这时候变量是默认值)
2)age在堆默认值为0,name初始化为null
3)当执行构造器时候,堆中age=90,name为string类型,将小青的值放在常量池中
6.this关键字(表示当前对象)
7.访问修饰符
8封装
9.继承
继承示意图:
细节:a).子类继承所有属性和方法,但私有属性不能在子类访问,要通过公共的方法去访问
b).调用子类的时候,父类构造器先被调用(是因为子类的无参构造器默认有super());
子类的构造方法默认调用 super();如果父类没有无参构造则此时会报错,
所以要买修改super(参数),要么在父类加上无参构造
c)子类构造器中,调用父类构造器的语句一定是放在第一行,super,和this都只能放在第一行,所以构造器都不同同时出现
d)父类的构造器调用不限于直接父类,一直追溯到顶级父类(object)
e)子类只能继承一个父类(指的是直接继承)
10.super关键字
a)访问父类属性,方法,构造器(但不能访问私有属性)
b)调用(this.方法 )==调用( 方法)
(先找本类,再往上找父类)
c)super.方法(直接调用父类)
11多态
a)对象的多态
案例:
当执行animal.cry()时候,因为运行类型是dog, 所以是执行dog的cry()方法,但前提是animal也有cry()方法
补充:编译和运行的区别
ii).编译就是将java代码交给编译器进行语法检查,如果没有错误就生成.class文件
ii).运行就是将字节码文件(.class)交给java虚拟机执行,如果没有逻辑错误,就成功出现结果。
编译期和运行期内存的分配
ii).编译期仅仅知道内存分配的位置和大小,不做具体的分配操作
ii).运行期确定真正的分配,确定分配的大小以及位置
b)多态是继承和封装的基础
ii)向上转型:父类的引用指向子类的对象
ii)向下转型:子类的引用指向父类的对象(只能强转父类引用,不能强转父类的对象)
c)看编译类型
d)动态的绑定机制(当调用方法时候,先从运行类型开始找;而调用属性没有动态绑定)
多态中成员的访问特点:
A:成员变量:编译看左边,执行看左边。
B:成员方法:编译看左边,执行看右边。
以上是关于面向对象三个基本特征:重载继承多态的主要内容,如果未能解决你的问题,请参考以下文章