面向对象特征之三:多态
狗是动物吗?是
猫是动物吗?是
狗是猫吗?不是
多态的形成有3个条件
1、有继承
2、有重写
3、有父类对象指向子类引用
第一种多态形式:(向上转型)
父类 父类对象 = new 子类();
第二种多态形式:(向下转型)
发生向下转型的前提,要先发生向上转型,才能通过强转再转成子类类型。
无敌方法
例:public Object show(Object ... obj){
return true;
}
不运行就是编译
多态的运行有三个条件
继承,重写,父类对象指向子类引用,前两个有时候不一定有,最后一个一定有
第一种多态的形式:(向上转型,小转大,自动转)
父类 父类对象=new 子类() 强转之后才可以这么写
父类对象不能调子类方法
第二种多态的形式:(向下转型)子类 子类对象=new 父类()
发生向下转型的前提,要发生向上转型,才能通过强转再转成子类类型
为了调方法
关键字instance:判断某一个对象是否是某一个类的实例
形参是Object类型,传什么都行,返回值是Object类型,返回值什么都行;
但是范围太大,入参有N多种情况,得有一个判断instance
匿名对象: new 类名();
调方法:new 类名().方法名();
只用一次可以用匿名对象,写起来更方便
依然具备调用属性,方法的功能
多数用在实参,多数情况下配合构造器
能节约资源
基本数据类型和引用数据类型没有关系,除了包装器,底层代码自动装箱
方法重写只有返回值类型和访问权限能改动,其他改了就不是重写了
数组是不是类:是
站在JVM的角度上看是类
站在编译角度就不是类,因为没有类名,没有结构
Arrays类,数组的工具类
链表:数据结构在内存中,数组和链表都是最基本的数据结构,表或者线性表
线性表:线性的结构,含有n>=0个结点的有限序列
有且只有上一个结点,有且只有下一个结点。没有下标
有头有尾的一条线
新增和删除很容易,查询难
数组查询容易,新增和删除耗费资源
所有的数据都是有地址的
单向链表
在维护一个结点自身的值同时,还要维护它的下一个值的指向
双向链表
在维护一个结点自身的值同时,还要维护它的上一个和下一个值的指向
学习中的问题:
学习方法不好,效率低,我认为是现在最大的问题,但是最近找到了很多窍门,比如多抄几遍代码,
老师也推荐我去多抄点,确实效果很好,很多想不明白的代码抄了几遍后就懂了,比较高兴。
学习感受:今天张老师找我谈话,我把我Java学到今天的疑问都告诉老师,比如我基础掌握得不好,
担心以后学Java会更难,老师跟我讲学Java的方法,做心理辅导,解答我的困惑,真的感谢老师,
我有信心学好,给自己一个交代
原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/277008.html