JAVA学习——继承和多态

一、inheritance继承

~在java中只能是单继承,不能有多继承;即一个类可以有多个子类,但是只能有一个父类。

1.extends表继承,格式:public class 子类名 extends 父类名{}

2.关键字 super

(1)super指向父类。~类似于this,而this指向对象本身

(2)super的两种用途:①调用父类的构造函数;(∵父类的构造方法不会被子类继承,∴子类只能使用super调用父类的构造函数。且super()或super(参数)只能出现在子类构造函数的第一行;如果没有显示调用,程序会自动在子类构造函数第一行加上super();)

②调用父类的方法。

3.Constructor chaining:就是在构造一个子类的对象时,会调用沿着继承链的所有父类的构造方法。构造函数调用顺序:自己的构造函数->父类的构造函数->父类的父类的构造函数->……(依次往上调用)。

4.overriding重写

(1)子类在自己的类中修改父类的方法。注意:写“@Override

私有方法不会被覆盖。

————(2)overriding重写 v.s. overloading重载————

①重载是指使用相同的名字但不同的参数列表;重写具有相同的签名和返回值类型。

②方法重写发生在通过继承而相关的不同类中;方法重载可以发生在同一个类中,也可以发生在由于继承而相关的不同类中。

(3)对象.toString()返回格式:对象的类名@表示对象的数字;常需重写。

二、polymorphism多态

1.polymorphism就是supertype(父类型)的变量可以引用subtype的对象。subtype的对象也是supertype的对象,但是supertype的对象不是subtype的对象。

2.dynamic binding:方法可以在沿着继承链的多个类中实现,而具体调用哪个方法由对象的actual type决定。

(1)e.g. SimpleObject poly=new CircleFromSimpleObject(0.8);
poly.toString();

中poly的declared type是SimpleObject,而actual type是CircleFromSimpleObject.所以调用的是CircleFromSimpleObject类的toString方法。

——————(2)method matching v.s. binding———————

方法匹配:编译器在编译时根据参数的类型、参数的个数、参数的顺序决定调用哪一个方法,这是由引用变量的声明类型决定的;方法绑定是指方法在几个子类中都可以被执行,JVM在运行时动态绑定方法的执行,这是由变量的实际类型决定的。

3.转化对象:

(1)可以用casting操作符将一个类对象转化成跟这个类有继承关系的类的对象。

 

对象名 instanceof 类名”用于判断该对象(看该对象的实际类型)是不是该类的对象。

——————————4.ArrayList类————————————

【注意】L大写!!!!!!!!

(1)ArrayList可以用于创建不限制长度的数组,格式:

import java.util.ArrayList;

ArrayList<类型>数组名=new ArrayList<>();

(2)ArrayList中的方法:

【注意】Array中返回长度的方法是length;而ArrayList返回长度的方法是size();

223f003360ef4c17a4d8f19ce61c2832.png

(3)ArrayList中的元素必须是对象,不能是基本数据类型;但是,可以使用包装类将基本数据类型转化为对象,再放到ArrayList中。

(4)Array v.s. ArrayList

6071355b171f475e84767428a6eb8a3f.png

5. 修饰符的访问权限:

(1)protected限定方法只能在同一个包中的类或不同包中的子类访问。

(2)package-private/package-access:如果没有可见性修饰符,则默认可以被同一个包中的所有类访问。

93561d334d4f4b9682548d8435e87c55.png

 

整理不易,亲亲点个赞呗~~

 

 

  • 22
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值