本博客旨在C语言转java。。。。。
理解java中继承的概念以及继承的方法。围绕着继承学习覆盖,多态和object类等知识点。
类是方法和属性的集合,方法的签名是类中唯一的合法的标识。。。。
继承出现将有助于实现面向对象的编程模式,缩小代码规模,利于代码的维护!
继承的时候使用到的extends关键字,java语言是单继承语言,有的语言支持多继承,但是多继承会很麻烦,不利于代码的维护。。。
如果项目比较大,那么此时要向别人描述项目就要用到类图,从mvc的角度说,类图可以描述业务和数据。。。看你怎么画了。。。。类图可以更直观的给人们讲解。。。
万类之祖:object:在java.lang包中,这个包中的类是java的基础,java中的类都肯定直接或者间接继承自object类。该类中没有属性,只有几个重要的方法。。。
java在创建了一个子类的对象的时候,其实也创建了父类的对象,父类的对象类似于被包含在子类中,当然父类如果还有父类,那么还是创建父类的对象。。。。
构造方法只能是类在创建的时候被调用,也就是说如果构造方法被调用了,那么这个类肯定被调用了。。。。。
当构造方法遭遇了继承,子类不能继承父类的构造方法,但是可以调用父类的构造方法,但是必须在子类构造方法内部的第一行且参数得与父类的某个构造方法相同。。
构造方法的调用,主要看参数,在new对象的时候,你传入什么参数就会调用什么构造方法,当然如果你调用参数在构造方法中没有,那就是error。。。
如果把一个使用一个父类的引用来使用子类的对象,那么如果遇到覆盖会怎么样??此时来个应用同时指向同一个对象,因为object是所以类的父类,所以object可以指向所有的对象,但是 不能使用类中的方法。。。。。。。。。。。。。
将父类对象强制类型转换为子类的对象。。。。。。。。。。。父类的引用必须是指向子类的对象。。。。。
覆盖与集成如影随性。。。。。。。。。。。。。。
当方法不再通用的时候,那么覆盖就来了。。覆盖子类中的方法名字完全和父类相同,执行子类的程序,使用super.调用父类的程序,当然非覆盖方法除外。。。
这里我们需要强调,当父类的引用指向一个子类后,调用覆盖的函数会执行子类的方法,这里就和上面有冲突了,但是记得“在编译程序的时候,可以调用那些属性,哪些方法是引用类型决定的,而在执行的时候,使用什么样子的方法是对象的类型决定的,”这里的条件转换很需要注意。。。
覆盖的参数的选择:实参必须可以覆盖形参,也就是可以理解为穿进去一个结构体,这个结构体中必须包含所需要的参数才行。。
覆盖可能带来各种各样的错误,但只要理解其执行先后的顺序,这个潘多拉盒子就不是什么问题。。。。。。。。。。。。。。。。
下面说一下多态,因为重载覆盖等引起的结果不确定的问题。。。。。。。。。。。。。。。
这里介绍一下Class类,类中的方法getClass();可以得到改引用的对象。。