Java中super的用法

简介: Java中super的用法super用于子类调用父类方法(private保护的方法除外)#子类默认会调用父类的无参构造器(在子类无参构造器的第一行中应为super())#1、注意如果父类定义了有参构造器那么子类便无法调用默认的无参构造器,解决方法应当给父类写出显式的无参构造器,或者子类调用父类构造器时添加参数super(参数)

Java中super的用法

javayouhuiquan.jpg

super用于子类调用父类方法(private保护的方法除外)#

子类默认会调用父类的无参构造器(在子类无参构造器的第一行中应为super())#

1、注意如果父类定义了有参构造器那么子类便无法调用默认的无参构造器,解决方法应当给父类写出显式的无参构造器,或者子类调用父类构造器时添加参数super(参数);

super的注意点:#

1、super调用父类的构造方法,必须写在构造方法的第一行。

2、super必须只能能出现在子类的方法或者构造方法中

3、super和this不能同时调用构造方法。

super与this的区别#

1、代表的对象不同

this:本身调用者这个对象

super:代表父类对象的应用

this:没有继承也能用

super:只能在继承中使用

构造方法的区别

this():本类的构造

super():父类的构造

代码解析#

//执行方法
public class application {
    public static void main(String[] args) {
        /*Demo09 student= new Demo09();
        student.setName("dalao");
        student.setAge(1000);//不合法数据
        System.out.println(student.getName()+"年龄"+student.getAge());//println属于方法的重载
        student.setAge(68);//合法数据
        System.out.println(student.getAge());//println属于方法的重载
         */
        Demo11 student = new Demo11();
        student.test01("小明");
        student.test02();
    }
}
//父类方法
public class Demo10 /*extends Object*/{
    public Demo10(){
        System.out.println("父类无参构造器已执行");
    }
    protected String name="小明同学";
    public void print(){//假如此处改为private私有其实也可继承只不过应当使用类如get,set方法来访问子类不能直接调用
        System.out.println("我是父类");
    }
}
//子类方法
    public Demo11(){
        super();//子类会默认调用父类的无参构造器
        System.out.println("子类无参构造器已执行");
        //super();而且调用父类无参构造器必须放在代码第一行
    }
    private String name ="xiaomingtongxue";
    public void test01(String name){
        System.out.println(name);
        System.out.println(this.name);
        System.out.println(super.name);
    }
    public void print(){
        System.out.println("我是子类");
    }
    public void test02(){
        print();
        this.print();
        super.print();
    }

结果#

父类无参构造器已执行
子类无参构造器已执行
小明
xiaomingtongxue
小明同学
我是子类
我是子类
我是父类

作者:Cn_FallTime

出处:https://www.cnblogs.com/CnFallTime/p/15820397.html

相关文章
|
1月前
|
Java
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
文章详细解释了Java关键字`super`的用途,包括访问父类的成员变量、调用父类的构造方法和方法,并提供了相应的代码实例。
107 5
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
|
4月前
|
Java
Java中的equals()与==的区别与用法
【7月更文挑战第28天】
67 12
|
22天前
|
存储 安全 Java
深入理解Java中的FutureTask:用法和原理
【10月更文挑战第28天】`FutureTask` 是 Java 中 `java.util.concurrent` 包下的一个类,实现了 `RunnableFuture` 接口,支持异步计算和结果获取。它可以作为 `Runnable` 被线程执行,同时通过 `Future` 接口获取计算结果。`FutureTask` 可以基于 `Callable` 或 `Runnable` 创建,常用于多线程环境中执行耗时任务,避免阻塞主线程。任务结果可通过 `get` 方法获取,支持阻塞和非阻塞方式。内部使用 AQS 实现同步机制,确保线程安全。
|
1月前
|
Java
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
本文介绍了Java中this和super关键字的用法,包括在构造方法中使用this来区分参数和成员变量、使用super调用父类构造方法和方法,以及它们在同一个方法中同时使用的场景。
111 0
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
|
2月前
|
Java
Java 正则表达式高级用法
Java 中的正则表达式是强大的文本处理工具,用于搜索、匹配、替换和分割字符串。`java.util.regex` 包提供了 `Pattern` 和 `Matcher` 类来高效处理正则表达式。本文介绍了高级用法,包括使用 `Pattern` 和 `Matcher` 进行匹配、断言(如正向和负向前瞻/后顾)、捕获组与命名组、替换操作、分割字符串、修饰符(如忽略大小写和多行模式)及 Unicode 支持。通过这些功能,可以高效地处理复杂文本数据。
|
2月前
|
存储 Java 数据处理
Java 数组的高级用法
在 Java 中,数组不仅可以存储同类型的数据,还支持多种高级用法,如多维数组(常用于矩阵)、动态创建数组、克隆数组、使用 `java.util.Arrays` 进行排序和搜索、与集合相互转换、增强 for 循环遍历、匿名数组传递以及利用 `Arrays.equals()` 比较数组内容。这些技巧能提升代码的灵活性和可读性,适用于更复杂的数据处理场景。
|
1月前
|
Java 程序员 编译器
【Java】继承、super、final、子类构造方法
【Java】继承、super、final、子类构造方法
26 0
|
2月前
|
安全 Java
Java switch case隐藏用法
在 Java 中,`switch` 语句是一种多分支选择结构,常用于根据变量值执行不同代码块。除基本用法外,它还有多种进阶技巧,如使用字符串(Java 7 开始支持)、多个 `case` 共享代码块、不使用 `break` 实现 “fall-through”、使用枚举类型、使用表达式(Java 12 及以上)、组合条件以及使用标签等。这些技巧使代码更加简洁、清晰且高效。
|
2月前
|
Java 开发者
【Java编程新纪元】JDK 22:超级构造函数来袭,super(...) 前导语句改写编程规则!
【9月更文挑战第6天】JDK 22的超级构造函数特性是Java编程语言发展史上的一个重要里程碑。它不仅简化了代码编写,还提升了代码的可读性和维护性。我们有理由相信,在未来的Java版本中,还将有更多令人兴奋的新特性等待我们去发现和应用。让我们共同期待Java编程新纪元的到来!
|
3月前
|
Java 数据处理
Java IO 接口(Input)究竟隐藏着怎样的神秘用法?快来一探究竟,解锁高效编程新境界!
【8月更文挑战第22天】Java的输入输出(IO)操作至关重要,它支持从多种来源读取数据,如文件、网络等。常用输入流包括`FileInputStream`,适用于按字节读取文件;结合`BufferedInputStream`可提升读取效率。此外,通过`Socket`和相关输入流,还能实现网络数据读取。合理选用这些流能有效支持程序的数据处理需求。
44 2