介绍
这篇文章主要讲解了如何使用Java中的继承,多态,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
介绍:
- <李>如果多个类中存在相同的属性和行为,可以将这些内容抽取到单独一个类中,那么多个类(子类)无需再定义这些属性和行为,只要继承那个类(父类/超类/基类)即可。【比如,泰迪狗类也是狗类,狗的属性,泰迪狗也应该是有的,那么泰迪狗类在定义的时候就不必要添加那些与狗类重复的属性了,而是直接继承狗类即可。在多个狗类的子类(泰迪狗,二哈,柴犬)的时候,直接继承狗类可以省去很多代码,提高代码复用性。】李> <李> 李> <李>子类可以直接访问父类中的非私有的属性和行为李> <>李继承的出现让类与类之间产生了关系,为第三个特征多态提供了前提。李> <李> Java只支持单继承,不能有多个父类,但支持多实现(接口)(多继承可能因为多个父类中有同名变量或函数而发生调用的不确定性)李> <李> Java支持多层继承<强> 强> 李> <李>当子父类不同包时,子类无法继承父类的友好变量(默认无权限修饰),只能继承公共或受保护的。李>
类人{ 字符串性别=皍nknown"//为了测试继承,先赋值 int年龄; 字符串family_address; 私人字符串的孩子; } 类学生扩展Person { } 公开课演示{ 公共静态void main (String [] args) { 学生圣=new (); System.out.println (st.gender);//未知//System.out.println (st.children);//报的错,孩子是父类私有 } }
继承中的构造函数:
- <李>默认是有调用父类的构造函数的,如果想要显式调用父类的构造函数,可以使用超级(参数列表)
- <李>为了测试有默认super()的例子
类人{ 字符串性别=皍nknown"//为了测试继承,先赋值 int年龄; 字符串family_address; 私人字符串的孩子; 人(){ System.out.println(“为了测试默认有超级()“); } } 类学生扩展Person { } 公开课演示{ 公共静态void main (String [] args) { 学生圣=new (); } } - - - - - - - - - - - - - - - - - - -结果: 为了测试默认有super (),李,李> <>显示调用构造函数的例子:
类人{ 字符串性别; int年龄; 字符串family_address; 私人字符串的孩子; 人(int字符串的性别、年龄、字符串family_address) { this.gender=性别; this.age=年龄; this.family_address=family_address; } } 类学生扩展Person { 学生(int字符串的性别、年龄、字符串family_address) { 超级(性别、年龄、family_address); } } 公开课演示{ 公共静态void main (String [] args) { 学生圣=新学生(“男“,18岁,“还有M78星云“); System.out.println (st.gender + st.family_address);//男还有M78星云 } } >之前 ,,李, > 李> <李> 李>继承中成员变量的隐藏和方法的重写:
- <李>对于子类中继承父类的成员变量,只要子类中对于同名的成员变量进行私有化,便能隐藏父类的成员变量。【如果只是子类的成员变量是可见的,那么直接定义同名变量覆盖父类变量即可】
- <李> 李>
- 重写就是子类中定义与父类中已有函数同名的函数,那么这个子类中的函数就将父类的函数覆盖了(不影响其他子类),当调用函数时,是调用子类中的该函数,而不是父类的。
- <李> 包重写;
类人{
空白显示(){
System.out.println(“在Fu"运行);
}
}
类学生扩展Person {
空白显示(){
System.out.println(“覆盖在Zi");
super.show ();
}
}
公开课演示{
公共静态void main (String [] args) {
学生圣=new ();
st.show ();//结果:覆盖在子//傅中运行
}
}