首页 > 其他 > 详细

第1节继承二

时间:2021-02-06 10:50:19      阅读:23      评论:0      收藏:0      [点我收藏+]

继承中构造方法的访问特点

package com.itheima_04;

public class Fu {
    public Fu(){
        System.out.println("Fu类无参构造方法");
    }

    public Fu(int age){
        System.out.println("Fu类带参构造方法");
    }
}
package com.itheima_04;

public class Zi extends Fu{
    public Zi(){
        System.out.println("Zi类无参构造方法");
    }

    public Zi(int age){
        System.out.println("Zi类带参构造方法");
    }
}
package com.itheima_04;
/*
* 测试类
* */
public class Demo {
    public static void main(String[] args) {
        //创建对象
        Zi z=new Zi();
        Zi z2=new Zi(12);
    }
}
//运行结果:
Fu类无参构造方法
Zi类无参构造方法
Fu类无参构造方法
Zi类带参构造方法

  子类中所有的构造方法默认都会访问父类中无参的构造方法

  为什么呢?

  • 因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化
  • 每一个子类构造方法的第一条语句默认都是:siper()
package com.itheima_04;

public class Zi extends Fu{
    public Zi(){
      //  super();
        super(12);
        System.out.println("Zi类无参构造方法");
    }

    public Zi(int age){
     //   super();
        super(12);
        System.out.println("Zi类带参构造方法");
    }
}

  如果父类中没有无参构造方法,只有带参构造方法,该怎么办呢?

  • 通过使用super关键字去显示的调用父类的带参构造方法
  • 在父类中自己提供一个无参构造方法

  推荐:自己给出无参构造方法

 

继承中成员方法的访问特点

package com.itheima_05;

public class Fu {
    public void show(){
        System.out.println("Fu中show方法被调用");
    }
}
package com.itheima_05;

public class Zi extends Fu{
    public void method(){
        System.out.println("Zi中method方法被调用");
    }
    public void show(){
        super.show();
        System.out.println("Zi中show方法被调用");
    }
}
package com.itheima_05;
/*
* 测试类
* */
public class Demo {
    public static void main(String[] args) {
        Zi z=new Zi();
        z.method();
        z.show();
    }
}

  通过子类对象访问一个方法

  • 子类成员范围找
  • 父类成员范围找
  • 如果都没有就报错(不考虑父亲的父亲...)

 

方法重写

  方法重写概述

  • 子类中出现了和父类中一模一样的方法声明

  方法重写的应用

  • 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容
  • 练习:手机类和新手机类
package com.itheima_06;
/*
* 手机类
* */
public class Phone {
    public void call(String name){
        System.out.println("给"+name+"打电话");
    }
}
package com.itheima_06;

public class NewPhone extends Phone{
    /*
    public void call(String name){
        System.out.println("打开手机视频");
        System.out.println("给"+name+"打电话");
    }
    */


    @Override //注解
    public void call(String name){
        System.out.println("打开手机视频");
        super.call(name);
    }
}
package com.itheima_06;

public class PhoneDemo {
    public static void main(String[] args) {
        Phone p=new Phone();
        p.call("曹巧梦");

        System.out.println("-------------");

        NewPhone newPhone=new NewPhone();
        newPhone.call("曹巧梦");
    }
}

  @Override

  • 是一个注解(注解后面会学到)
  • 可以帮助我们检查重写方法的方法声明的正确性

 

方法重写注意事项

  • 私有方法不能被重写(父类私有成员子类是不能继承的)
  • 子类方法访问权限不能更低(public > 默认 > 私有)

Java中继承的注意事项

  • Java中类只支持单继承,不支持多继承
  • Java中类支持多层继承

第1节继承二

原文:https://www.cnblogs.com/fangbin-caoqiaomeng/p/14380278.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!