面向对象三个基本特征:重载继承多态

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:成员方法:编译看左边,执行看右边。

以上是关于面向对象三个基本特征:重载继承多态的主要内容,如果未能解决你的问题,请参考以下文章

面向对象的三个基本特征 封装 继承 多态

OOP三个基本特征:封装继承多态

面向对象的三个基本特征

面向对象的三个基本特征

java的三个基本特征是啥?

面向对象的三个基本特征