在子类中,一定要访问父类的有参方法?
2017-05-03 09:36
381 查看
达人科技 2017-05-02 11:11
分析上面的代码:
上面代码,在父类中已经重写了构造方法public Person(int age,String name)。如果在子类中不进行父类的有参构造方法的访问,子类就会默认访问父类的无参构造方法super,但是父类已经构造了有参构造方法,父类中并没有无参构造方法,那它就不能调用了,所以编译就无法通过了。
总结1:
Java规定类的构造方法只能由new调用,程序员不能直接调用,但可用super间接调用,类的构造方法是不能继承的!
总结2:
♥♥如果子类构造方法中没有显示调用父类构造方法,那么系统自动去调用父类的默认构造方法super。
总结3:
创建有参构造方法后,系统就不再有默认无参构造方法。如果没有任何构造方法,系统会默认有一个无参构造方法。
总结4:
♥♥在没有给类提供任何构造方法时,系统会自动提供一个无参的方法实现为空的构造方法。一旦提供了自定义构造方法,系统将不会再提供这个默认构造方法。如果要使用它,程序员必须手动添加。
public class Person { private int age; private String name; public Person(int age, String name) { this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public abstract void want; } class Student extends Person{ private int score; public int getScore { return score; } public void setScore(int score) { this.score = score; } public Student(int age, String name,int score){ super(age, name); this.score=score; } public void want { System.out.println("姓名:"+getName+"年龄:"+getAge+"成绩:"+getScore); } } class Worker extends Person{ private int money; public int getMoney { return money; } public void setMoney(int money) { this.money = money; } public Worker(int age, String name,int money) { super(age, name); this.money=money; } public void want { System.out.println("姓名:"+getName+"年龄:"+getAge+"工资:"+getMoney); } } public class ABSDemo01 { public static void main(String[] args) { Student s = new Student(10, "小明", 100); s.want; Worker w = new Worker(35, "大明", 1000); w.want; } }
分析上面的代码:
上面代码,在父类中已经重写了构造方法public Person(int age,String name)。如果在子类中不进行父类的有参构造方法的访问,子类就会默认访问父类的无参构造方法super,但是父类已经构造了有参构造方法,父类中并没有无参构造方法,那它就不能调用了,所以编译就无法通过了。
总结1:
Java规定类的构造方法只能由new调用,程序员不能直接调用,但可用super间接调用,类的构造方法是不能继承的!
总结2:
♥♥如果子类构造方法中没有显示调用父类构造方法,那么系统自动去调用父类的默认构造方法super。
总结3:
创建有参构造方法后,系统就不再有默认无参构造方法。如果没有任何构造方法,系统会默认有一个无参构造方法。
总结4:
♥♥在没有给类提供任何构造方法时,系统会自动提供一个无参的方法实现为空的构造方法。一旦提供了自定义构造方法,系统将不会再提供这个默认构造方法。如果要使用它,程序员必须手动添加。
相关文章推荐
- OC中继承子类对象调用方法机制 子类对象访问父类中的实例变量
- 子类用反射可以访问父类中的私有成员变量及方法
- JavaSE8基础 同一个包下的子类,可以访问到父类中的 默认/受保护/公有方法
- 子类重写父类方法的访问权限
- 子类继承父类的私有属性和方法但是不能访问父类私有属性和方法
- 为何Java中子类重写方法的访问权限不能低于父类中权限
- 为什么子类中不能访问另一个包中父类中的protected方法?
- JavaSE8基础 不同包下的子类中创建父类对象只可以访问到公有方法
- 关于protected在子类创建父类对象无法访问父类protected方法或成员
- 子类能否访问或覆盖父类的private方法
- 子类和父类中方法和变量访问权限
- 关于模板类中,子类无法访问父类成员问题的解决方法
- OC中继承子类对象调用方法机制 子类对象访问父类中的实例变量
- JavaSE8基础 子类中所有的构造方法默认访问父类中无参构造方法
- php 子类如何访问父类的静态方法
- Java 多态 父类和子类方法的访问控制权限
- 为何Java中子类重写方法的访问权限不能低于父类中权限
- Java中子类的基本继承方法,子类通过继承父类public方法,访问父类private成员
- 父类中的private方法会被子类继承吗????可以访问吗????
- 子类和父类中方法和变量访问权限