首页 > 文章列表 > Java继承与重写的特点是什么

Java继承与重写的特点是什么

java
204 2023-05-04

Java继承与重写的特点是什么

概念:继承是面向对象语法三大特征之一,继承可以降低代码的沉余度,提高编程的效率。通过继承子类可以随意调用父类中的某些属性与方法,一个子类只能继承一个父类,一个父类可以被多个子类继承。它就好比与我们显示生活中孩子继承父亲的财产。重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法,就好比金毛与哈士奇他的特征都是来自狗,仓鼠与松鼠他们他们的特征来自老鼠,而他们身上的不同属于基因突变就相当于重写

继承的特点:

1):java中只支持单根继承,即一个类只能有一个直接父类,一个父类可以有多个子类

2):将子类公共的属性抽取出来生成父类属性用于继承

3):子类无法继承或重写父类private修饰的属性和资源

重写的特征:

1).子类重写的方法必须和父类被重写的方法具有相同的方法名称、参数列表

2).子类重写的方法的返回值类型不能大于父类被重写的返回值类型

3).子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限子类不能重写父类中声明为private(即私有属性)权限的方法

4).子类方法抛出的异常不能大于父类被重写方法的异常

需要用的的方法或关键字:

extends:我们可以通过此关键字来进行继承,在关键字后写入需要被继承的类或方法既可实现继承

super():我们可以通过此方法来调用我们继承后的父类的属性或方法使用

测试类:

package com.ytzl.total;

/*继承*/

public class inherit {

    public static void main(String[] args) {

        son son = new son();//调用子类

        System.out.println(son.a);//调用子类中的属性

        son.a=2;//可以通过子类改变父类中的属性

        System.out.println("更改后的父类属性"+son.a);

        son.myfather();//带调用父类的方法

        son.money();//调用重写的方法w

        son.jng();//调用静态修饰方法

        son.jing();

        System.out.println("子类通过继承方法调用父类中的属性=>"+son.b);//调用父类中的静态属性

        son.two();

    }

}

父类:

package com.ytzl.total;

public class father {

    int a=0;

    static int b=2;

    private int one=4;//被私有属性修饰后将不能别子类调用或继承,

    protected int two=0;

    protected void two(){//该方法只能被子类继承重写不能被调用

        System.out.println("我是protected方法");

    }

    public void setOne(int one) {

        this.one = one;

    }

    public void money(){

        System.out.println("我是被子类重写的方法");

        System.out.println("父类的属性=>"+a);

    }

    public void myfather(){

        System.out.println("我是被子类继承的方法");

    }

    public static void jing(){

        System.out.println("你好");

    }

    public static void jng(){

        System.out.println("你好");

    }

    private void dong(){

        System.out.println("私有方法");

    }

}

子类:

package com.ytzl.total;

public class son extends father{

    //方法的重写

    public void money(){

        super.money();//通过继承过去父类的money方法里的内容

        System.out.println("重写后的方法");

        System.out.println("被继承后"+super.a);//通过super来继承父类的属性

        System.out.println("继承后的protected属性=>"+super.two);//通过super来继承protected方法

        super.two();

    }

    public static void jing(){//不能重写静态方法static

        System.out.println("不好");

    }

    private void dong(){//不能重写或者继承父类的私有方法

        System.out.println("私有方法");

    }

    protected void two(){//重写后的protected方法

        System.out.println("我是重写后的protected方法");

    }

}

运行后的结果: