java中super关键字有什么用

Java中的super关键字是一个非常重要的关键字,它的主要作用是用来调用父类的构造方法、成员变量和成员方法,在Java中,super关键字主要用于以下几个方面:

创新互联建站服务项目包括华州网站建设、华州网站制作、华州网页制作以及华州网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,华州网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到华州省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

1、调用父类的构造方法

当子类创建对象时,如果没有显式地调用父类的构造方法,那么父类的无参构造方法会被自动调用,如果需要在子类的构造方法中调用父类的有参构造方法,可以使用super关键字。

class Parent {
    public Parent() {
        System.out.println("Parent constructor");
    }
}
class Child extends Parent {
    public Child() {
        super(); // 调用父类的无参构造方法
        System.out.println("Child constructor");
    }
}

2、访问父类的成员变量和成员方法

在子类中,可以使用super关键字来访问父类的成员变量和成员方法。

class Parent {
    private String name = "Parent";
    public String getName() {
        return name;
    }
}
class Child extends Parent {
    private String name = "Child";
    public void setName(String name) {
        super.setName(name); // 调用父类的setName方法
        this.name = name;
    }
}

3、实现多重继承时的菱形问题解决

在Java中,如果一个类继承了两个或多个父类,那么可能会出现菱形问题,即一个子类继承了A父类和B父类,而B父类又继承了C父类,这时如果在子类中使用super关键字调用C父类的方法,就会抛出编译错误,为了解决这个问题,可以使用super关键字来调用所有父类的相同方法。

class A {}
class B extends A {}
class C extends B {}
class D extends C {}
class E extends D {}

在E类中,可以使用super关键字调用所有父类的getName方法:

class E extends D {
    public void getName() {
        System.out.println("E getName"); // 调用D的getName方法(通过super关键字)
        System.out.println("E getName (by self)"); // 直接调用自己的getName方法(会抛出编译错误)
    }
}

4、在匿名内部类和Lambda表达式中使用super关键字

在Java中,还可以在匿名内部类和Lambda表达式中使用super关键字。

List list = new ArrayList<>();
list.add("Hello");
list.add("World");
list.forEach(item -> System.out.println(item)); // 在Lambda表达式中使用super关键字(实际上并没有用到){} -> {} 是多余的,可以省略掉,正确的写法是:list.forEach(System.out::println); // 或者使用增强型for循环遍历列表并打印元素:for (String item : list) { System.out.println(item); }; // 在匿名内部类中使用super关键字访问父类的构造方法和成员变量/方法{ super(); // 调用父类的无参构造方法; this.name = "Anonymous"; System.out.println(this.name); // 或者直接访问父类的成员变量/方法:System.out.println(super.name); // 但是这样会抛出编译错误,因为super关键字不能直接访问非静态成员变量/方法; // 所以通常情况下,我们会将匿名内部类改为继承自一个具体的父类,然后就可以直接访问其成员变量/方法了。}

文章题目:java中super关键字有什么用
网页网址:http://www.shufengxianlan.com/qtweb/news46/103446.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联