Java中super详解

您所在的位置:网站首页 super,什么意思 Java中super详解

Java中super详解

2024-06-30 15:35| 来源: 网络整理| 查看: 265

目录

Java中super详解

super的作用:

1.     通过super可以访问父类的构造方法 

2.   通过super可以访问父类的属性(非私有)

3.        通过super可以访问父类的方法(非私有的方法)

Java中super详解

在说super之前先说一下Java中的继承,继承是Java中面向对象编程技术的重要基石,因为它允许创建分等级层次的类。继承就是子类继承父类的行为和特征,就是方法和属性。私有的属性和方法子类是能继承的,但是子类无法直接调用,调用父类的私有属性需要在父类中声明get和set方法,这里final类型的父类成员私有变量也能被子类继承,而父类中的私有方法,子类虽然继承了,但是并不能够使用。

继承的限制:Java中只有单继承,多重继承,没有多继承(一个子类有多个父类的情况不允许存在)

java权限修饰符 修饰符类包子类其他包public√√√√protected√√√×default√√××private√××× super的作用: 1.     通过super可以访问父类的构造方法 

调用父类构造方法的代码必须放在子类构造方法的第一行,不这样执行会报错(规定的格式),用super调用属性时不用遵守。

当父类没有无参构造方法时,不能直接使用super();调用父类构造方法

设置父类Person

package com.kkb.task010203.pojo; import java.util.Objects; public class Person { private int age; private String name; public Person() { System.out.println("父类无参构造方法被调用");//无参构造函数 } public Person(int age, String name) { //有参构造函数 this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return age == person.age && Objects.equals(name, person.name); } @Override public int hashCode() { return Objects.hash(age, name); } @Override public String toString() { return "姓名"+this.name+",年龄"+this.age; } public void setName(String name) { this.name = name; } public void say(){ //父类中的say方法 System.out.println("我叫"+name+"今年"+age+"岁了"); } }

子类Teacher

package com.kkb.task010203.pojo; public class Teacher extends Person{ public Teacher() {//子类的构造方法 super(14,"李四");//调用父类中有参构造方法 } }

测试类

package com.kkb.task010203.pojo; public class MainTest { public static void main(String[] args) { Teacher teacher = new Teacher(); teacher.say();//由于子类中没有重定义say方法,这里调用Person父类中的say方法 } }

输出结果

2.   通过super可以访问父类的属性(非私有)

我们在父类属性中添加一个public属性 

在子类方法中通过super操作Person父类中sex属性

这时父类中的sex属性已经被修改,可以通过print验证。

3.        通过super可以访问父类的方法(非私有的方法)

利于super调用Person父类中的setName()方法修改Teacher对象的姓名属性

 

输出结果

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3