首先楼主的你的代码段:GoodStudent gs=new person("你好!"); 这是错误的!原因是子类不能应用父类的实例,而父类能应用子类的实例.
楼主不是很明白上面兄弟的意思.好吧,我来在给你解释解释...
1,首先子类可以访问父类所有的共性方法或属性,就是用public来修饰的方法或者属性.
但是如果是private来修饰的方法或者属性的话,子类不能访问了.
2,那么楼主如果想调用父类的有参构造函数,则该构造函数必须是public的.或者其他非private修饰的构造函数.
下面是我对楼主的问题写的代码:- public class Person {
- //Persion的有参构造函数
- public Person(String value){
- System.out.println("Persion的构造函数:"+value);
- }
- }
复制代码- public class Student extends Person{
- public Student(String value) {
- //调用父类的构造函数
- super(value);
- }
- }
复制代码
- <P>public class GoodStudent extends Student{
- public GoodStudent(String value) {
- //调用父类的构造函数
- super(value);
- }
- public static void main(String[] ages){
- //调用person的有参构造函数,其实调用本类的同样有参函数就可以了
- GoodStudent gs=new GoodStudent("你好!");
- }
- }</P>
复制代码 这样就可以调用父类的有参构造函数了.
可是你会发现每一个Person的子类都同样有一个相同参数的构造函数.原因是父类Person的有参构造函数的public修饰的,子类都继承了.说明子类
可以经过该构造函数来创建父类实例.既然如此那么子类就必须也有一个相同参数的构造函数,否则将违反子类可以继承全部父类共性方法属性的原则.
而子类的有参构造函数体重则在返回调用父类的相同参数的构造函数.
|