发表于: 2017-10-13 22:22:37
2 712
本来该前天结束的语法基础
Super关键字,昨天学习继承知道,子类可以继承父类,但是,如果子类中声明的成员变量,方法与父类的成员变量方法同名,那么子类就会就不能继承父类的属性方法,会被子类掩藏;那么如果想在子类中访问父类中被子类隐藏的成员方法或变量,就可以使用super关键字。
调用父类的构造方法,
操作被隐藏的成员变量和被重写的成员方法
Object,所有类都是继承object类,一个类没有用extends关键字,那么就是继承了ob,那么ob里的方法适用于所有类,说几个重要的方法to string()方法,会返回一个哈希码,也就是区分对象的,也就是对象的地址信息
可以,通过重写to string()方法来返回该对象的属性值,重写也是有快捷键的,很方便,这样返回的对象就带有属性值了
然后说一下equals()方法,通常来说是比较的是对象引用的地址内存是否相同,就拿我们通过new来创建对象,实际上只是引用,是通过操作地址内存来控制,对象的,本身并不是对象;类似于拿遥控器操作电视,并不是直接操作电视对象本身,而是间接控制。那equals比较的就是两个对象是否指向同一个内存地址。通过new的话显然是不同的,因为开辟了两个内存,这个时候equal也就类似于==。
实际上通常比较的是两个对象的值是否相同,这个时候可以通过重写equals方法,来比较值,当然也是有快捷键。
前面说了双等号也是比较内存开辟空间,把刚刚相同的euqals改成==号的话,应该会说不相同,似乎这样也没有比较出效果,没有调用重写的equals方法,不过至少验证了双等号也是比较内存地址的。。
多态,也就是多种形态,局限于是继承关系的情况下,比如通常情况下父类的引用可以指向本类的对象,而多态是指还可以指向子类的对象,这就是引用多态;
还有就是方法多态,与前面说的类似,如果创建本类对象时可以调用本类方法,如果创建的是子类对象则调用子类的方法(重写或者是继承的)
独有的方法,非继承和重写的方法不能被父类的引用调用
引用中的instanceof翻译的话应该是谁的实例吧,主要是用在类型转换的时候,防止类型不匹配,这个情况就是,编译不报错;但是运行不通过,类型不匹配,创建对象时开辟的是pig空间,转换到cat时不批配的,编译时cat类,运行时是pig类
可以通过instanof来提前预判是否可以转换
抽象类abstract,用abstract修饰的类表示这个类是一个抽象类,用abstract修饰的方法表示这个方法是一个抽象方法。抽象类不能被实例化,换句话说就是抽象类就是为了被继承而存在的,用父类引用指向,同时抽象方法是只有方法声明,而没有方法的实现内容。
可以看出引用方式还是多态,好处的话是一旦需求有改动的时候,修改起来灵活,变化起来容易,不用修改过多的代码。似乎抽象类也是为了多态。
接口interface,这个概念已经前面已经细说了,这里简单再实践一下吧,接口的话实际上就是用来被继承和被实现的;这也就规定了接口的修饰通常是public,其实仔细想想,接口也就是一种java中的东西,就像类也是java的一种东西,只不过类叫class而接口叫interface而已,而且接口里的内容都是常量和抽象方法,只不过定义接口时会省略abstract和public static final这些关键字。而接口的好处就是扩展吧,因为类是单继承但是可以实现多个接口,这样的话就通过接口实现两个或多个类之间共同特性的描述。
接口中的方法没有方法体
从这个例子中可以看到接口实现了psp和手机这两个不同类之间共同的特性玩游戏
最后是接口的另一个使用方式,是与匿名内部类配合使用的,这个好像不是重点就是简单了解一下吧,首先匿名内部类是没有名字的内部类,仅仅关注实现吧
自己独立实现一个小例子,用到抽像,多态,继承方法,很简单,但是用到的点很好;同时发现前面提到接口中的方法没有body,实际上是因为抽象方法没有方法体吧,这里也是。
明日计划的事情:
整体看看任务一,等大佬们的干货。
遇到的问题及解决方法:
集中学习大量的理论知识,实践太少,接下来就是实战吧,多应用,加强理解记忆
收获:
真正学习的话,还是能学到知识的,不像之前水日子。。。当然也有一部分原因是自己心态不好,学习方法不对,语法整体看的差不多一遍了,至少类对象构造方法这些,看到能看懂了,不会再懵逼了。。。。
评论