(二)理解Java的三大特性之继承

转载:http://www.cnblogs.com/chenssy/p/3354884.html

继承:

构造器、protected关键字、向上转型。

构造器:

父类有默认构造器。如果父类没有默认构造器,我们就要必须显示的使用super()来调用父类构造器,否则编译器会报错:无法找到符合父类形式的构造器。

Note:对于继承而已,子类会默认调用父类的构造器,但是如果没有默认的父类构造器,子类必须要显示的指定父类的构造器,而且必须是在子类构造器中做的第一件事(第一行代码)
测试:

   public static class  Husband extends Person{
        private Wife wife;

        Husband(){
           // super("Queenie");
            System.out.println("husband constructor...");
        }
    }

结果:

Error:(15, 18) java: 无法将类 main.Inherit.Person中的构造器 Person应用到给定类型;
  需要: java.lang.String
  找到: 没有参数
  原因: 实际参数列表和形式参数列表长度不同

protected关键字

指明就类用户而言,他是private,但是对于任何继承与此类的子类而言或者其他任何位于同一个包的类而言,他却是可以访问的。

Note:将属性保持为private(我们应当一致保留更改底层实现),通过protected方法来控制类的继承者的访问权限

测试:

public class ProtectedPerson {
    protected String name;
    protected String sex;
    protected int age;

    protected  String getName(){
        return  name;
    }
    protected  void setName(String name){
        this.name = name ;
    }

    @Override
    public String toString() {
        return "This name is "+name;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getSex() {
        return sex;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public static class Husband extends ProtectedPerson{
        private  Wife wife;

        @Override
        public String toString() {
            setName("Queenie");//调用父类的setName();
            return super.toString();//调用父类的toString()方法;
        }
    }

    public static void main(String[] args) {
        Husband husband = new Husband();

        System.out.println(husband.toString());

    }
}

结果:

This name is Queenie

向上转型

将子类转换成父类,在继承关系上面是向上移动

测试:

public class UpwardPerson {

    public static void display(Husband husband) {
        System.out.println("Play UpwardPerson... ");
    }

    public static class Husband extends  UpwardPerson{
        public static void main(String[] args) {
            Husband husband = new Husband();
            UpwardPerson.display(husband);  //向上转型
        }
}

结果:

Play UpwardPerson... 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值