导航
1.在子类父类中有相同参数,子类继承分类后如何进行调用,判断创建的对象属性哪个类(instanceof)
2.子类继承父类时,怎么调用父类构造函数,以及如何访问到父类的私有属性,子类是否能够继承父类的私有属性
3.根父类:Object类
——————————————————————————————————————
1.在子类父类中有相同参数,子类继承分类后如何进行调用
package cn.campsg.java.experiment; public class Student { public static class clsSuper{ public int m_a = 5; } public static class clsSub extends clsSuper{ public int m_a = 6; } public static void main(String[] args){ clsSuper o1 = new clsSuper(); System.out.println(o1.m_a); //这里是访问父类的m_a clsSuper o2 = new clsSub(); System.out.println(o2.m_a); //这里也是访问的父类m_a if(o2 instanceof clsSub){ //进行判断是否是clsSub类 System.out.println("o2是clsSub类型"); } else System.out.println("no"); clsSub o3 = new clsSub(); System.out.println(o3.m_a); //这里访问的子类m_a } }
运行结果:
——————————————————————————————————————
2.子类继承父类时,怎么调用父类构造函数,以及如何访问到父类的私有属性,子类是否能够继承父类的私有属性
回答:使用super()来调用父类的构造函数。子类继承父类时,是不能继承父类的私有属性的,只能通过从父类继承到的公共方法来得到私有属性
看下面例子:
这里步骤是创建子类对象,并且通过调用子类的构造函数,也给父类进行构造函数调用,并且输出子类以及父类中的属性
其中父类的属性由本身的公共方法进行输出或者在子类中使用super.的形式来输出父类中的私有属性
package cn.campsg.java.experiment; public class Student { public static class clsSuper{ private int m_a=20; public clsSuper(){ //缺省构造函数 } public clsSuper(int a){ //有参构造函数 m_a = a; } public void get(){ //得到父类的私有属性 System.out.println("a="+m_a); } } public static class clsSub extends clsSuper{ private int m_b=30; public clsSub(int b,int a){ super(a); //调用父类的构造函数 m_b = b; } public clsSub(int b){ m_b = b; } public void get1(){ //子类本身也可以使用父类的私有属性 System.out.println("a="+super.m_a); //也可以使用super.的形式访问到父类的私有属性 } } public static void main(String[] args){ clsSub o1 = new clsSub(20,40); o1.get1(); //输出父类中的m_a System.out.println("b="+o1.m_b); //输出子类中的m_b } }
运行结果:
注意:super可以用来区分子类还是父类同名的属性,也可以进行父类构造函数使用
super在构造器中必须要在第一行,在子类其他作用域时可以在任意行
——————————————————————————————————————
3.根父类:Object类
3.1认识object类
使用object中的toString()使用下
package cn.campsg.java.experiment; public class Student { public static class clsSuper{ public void show(){ } } public static void main(String[] args){ clsSuper s = new clsSuper(); System.out.println(s.toString()); } }
打印:
提供的一组方法:
3.2 equals方法使用与继承
package cn.campsg.java.experiment; public class Student { public static class clsSuper{ private int m_score=20; public boolean equals(Object obj){ if(obj instanceof clsSuper){ clsSuper o = (clsSuper)obj; if(o.m_score == this.m_score){ return true; } else{ return false; } } else{ return false; } } } public static void main(String[] args){ clsSuper s = new clsSuper(); clsSuper s1 = new clsSuper(); System.out.println(s.equals(s1)); } }