继承

继承的概念

继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及追加属性和方法

继承的实现

class fu{
    int age;
    public void show(){
        System.out.println("这是父类方法");
    }
}
class zi extends fu{
    public void print(){
        System.out.println("这是子类方法");
    }
}

public class tes {
    public static void main(String[] args) {
        //测试子类是否可以调用父类的成员
        zi a=new zi();
        a.age=45;
        //测试子类是否可以调用父类方法
        a.show();
    }
}

总结

继承可以让类与类之间产生关系,子父类关系,产生子父类后,子类则可以使用父类中非私有的成员,和方法

继承中的成员访问特点

class fu{
    int age=10;
}
class zi extends fu{
    int age=50;
    public void show(){
        System.out.println(age);
    }
}

public class tes {
    /*
        测试继承中成员访问规则
     */
    public static void main(String[] args) {
        zi a=new zi();
        a.show();
    }
}

输出结果

在这里插入图片描述

class fu{
    int age=10;
}
class zi extends fu{
    int age=50;
    public void show(){
        int age=80;
        //测试当前面加上super时
        System.out.println(super.age);
    }
}

public class tes {
    /*
        测试继承中成员访问规则
     */
    public static void main(String[] args) {
        zi a=new zi();
        a.show();
    }
}

输出结果

在这里插入图片描述

class fu{
    int age=10;
}
class zi extends fu{
//    int age=50;  测试当 当前类没有成员时的访问规则
    public void show(){
        System.out.println(age);
    }
}

public class tes {
    /*
        测试继承中成员访问规则
     */
    public static void main(String[] args) {
        zi a=new zi();
        a.show();
    }
}

输出结果

在这里插入图片描述

总结

  • 如果访问之前没有加super,访问规则时是就近原则,如果有super则访问父类中成员
  • 如果子类中没有成员,就自动访问父类中成员

方法的重写

  • 方法重写概念
  • 子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样)
  • 方法重写的应用场景
  • 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容

实现

package Day01;
class fu{
    int a;
   public void show(){
       System.out.println("调用父类方法");
   }
}
class zi extends fu{
    @Override
    public void show(){
        System.out.println("调用子类方法");
    }
}
public class tes {
  /*
    重写方法
   */
    public static void main(String[] args) {
        zi a=new zi();
        a.show();
    }
}

方法重写的注意事项

package Day01;
class fu{
    int a;
    //测试子类是否可以重写私有方法
    private void method(){
        System.out.println("method 方法");
    }
   public void show(){
       System.out.println("调用父类方法");
   }
}
class zi extends fu{
    @Override
    public void show(){
        System.out.println("调用子类方法");
    }
    @Override //这里爆红证明不可以重写父类私有的方法
    private void method(){
        System.out.println("dfdsfdsf");
    }
}
public class tes {
  /*
    重写方法
   */
    public static void main(String[] args) {
        zi a=new zi();
        a.show();
    }
}

在这里插入图片描述

package Day01;

import jdk.nashorn.internal.runtime.Property;

class fu{
    int a;
    //测试子类是否可以重写私有方法
    private void method(){
        System.out.println("method 方法");
    }
   public void show(){
       System.out.println("调用父类方法");
   }
}
class zi extends fu{
    @Override//编译不通过所有子类重写父类的访问权限要大有父类的权限
    protected void show(){
        System.out.println("调用子类方法");
    }
    @Override //这里爆红证明不可以重写父类私有的方法
    private void method(){
        System.out.println("dfdsfdsf");
    }
}
public class tes {
  /*
    重写方法
   */
    public static void main(String[] args) {
        zi a=new zi();
        a.show();
    }
}

在这里插入图片描述

权限修饰符在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值