Java(一)面向对象--04封装、继承、多态

2019-10-30  本文已影响0人  young十三

3大特性

一、什么是多态

比如需要一个List类,可以实例化:
ArrayList list = new ArrayList();
也可以:
List list = new ArrayList();
若现在的需求是ArrayList已经无法满足,需要更换为LinkedList,如果按照第一种写法,那么你需要做的工作可能比较多,除了修改list的类型,还要考虑的是你换成LinkedList的时候,你之前用ArrayList所调用的方法,LinkedList是否拥有,这无形中增加了许多工作量。
如果按照第二种写法来实现,那么只需改成List list = new LinkedList()即可,无须担心之前所调用的方法。

1、多态的条件:

继承。在多态中必须存在有继承关系的子类和父类。
重写。子类对父类的默些方法重新定义,在调用这些方法的时候就会调用子类的方法。
向上转型。在多态中需要将子类的引用赋值给父类对象,只有这样该引用才能具备技能调用父类的方法和子类的方法。
只有满足了上述三个条件,我们才能实现多态

2、典型案例

image.png
public void Father(){

fMethod();//...父类的方法,简略写了

}
public void Son extens Father

{

fMethod();//...子类重写的方法,简略写了

}
public class TestExtends{

        public static void main(String[] args){

            Father f =new Son();

            f.fMethod();
       }
 }

这里动态调用的就是子类的重写方法,如果子类没有重写方法,那就调用的就是父类的方法;

二、方法重载和方法重写

1、方法重载

参数类型必须改变

比如方法名相同,参数相同,返回类型不同,不是重载,编译不通过。
你自己可以设想,如果你调用了这个方法,系统如何判断你到底调用的是带返回值还是不带返回值的方法呢?

image.png

2、方法重写

image.png

针对第2点,说法不太准确,应该是大于或者等于。如果子去重写父的方法,方法的权限默认是和父一样的,但也可以改,但只能加大权限,不能缩小权限,比如父是protected,子类重写时可以改成public,但如果是public的,重写只能是public。

三、Java的继承与实现

1、继承

继承是单继承

image.png

2、接口

image.png

四、构造函数和默认构造函数

1、构造函数

image.png

如果你想在用有参构造函数的同时又能够用无参的构造函数,你可以显示的声明一个无参的构造函数和一个有参的构造函数,否则无法使用。

五、类变量、成员变量与局部变量

image.png
image.png image.png image.png
上一篇下一篇

猜你喜欢

热点阅读