这篇笔记适合java初学者参考学习.带有代码编程,可以运行查看方便学习。
网上有许多教程说法不一,有些深奥难懂,有些简单。我只按自己理解给大家进行参考。
一、父类与子类的构造方法
1、如果父类FatherClass有构造方法,则子类SonClass创建实例对象时,自动访问父类构造方法。
2、如果子类子类SonClass有构造方法,则子类SonClass创建实例对象时,优先自动访问父类构造方法,在访问子类的构造方法。
3、如果父类FatherClass有无参数的构造方法,则子类的构造方法中可以不写super(),它会自动默认有super()。
4、如果父类FatherClass有带参数的构造方法,但没有创建 无参数的构造方法,则子类构造方法中必须写super(传递参数),必须带有传递参数否则报错。
二、父类与子类的关系。
1、子类继承了父类,子类实例对象可以调用父类public的属性及public的方法.
2、子类实例对象无法调用父类FatherClass私有属性及私有方法,但可以通过父类的public方法进行调用。
3、父类的静态属性及静态方法只有父类可以调用,子类及子类实例对象无法调用,但可以通过父类的public方法进行调用。
4、各自的类文件中才可以调用private属性及方法,即父类的类程序调用父类private属性及方法,子类的类程序调用子类private属性及方法。
5、向上转型。也叫多态。
1、 父类名称 引用变量名 = new 子类名称() 即FatherClass var_name = new SonClass();
2、子类继承了父类后,子类也拥有父类的public属性及方法,在这里把new SonClass()看成父类的实例化比较好理解,好记。所以var_name 单纯的为父类对象,拥有父类的public属性及方法,不能拥有子类的属性及方法。
6、向下转型。
1、 父类名称 (父类)引用变量名 = new 子类名称() 即FatherClass fat_var_name = new SonClass();
子类名称 (子类)引用变量名 = (子类类型)父类实例对象名称(即(父类)引用变量名)
即 SonClass son_var_name = (SonClass)fat_var_name
2、向下转型条件:
1、先向上转型;
2、父类实例对象强制转化为子类实例对象。
3、son_var_name 用子类的public和private的属性及方法 和父类的public的属性和方法。