Super

使用super关键字可以直接调用父类中的构造方法、属性、普通方法

super调用父类构造方法的操作,与this调用构造方法一样,语句必须放在子类构造方法的首行

  1. public class Person { //定义父类Person
  2. private String name; //定义name属性
  3. private int age; //定义age属性
  4. public Person(String name,int age) { //通过构造方法设置name、age
  5. this.setName(name); //设置name属性内容
  6. this.setAge(age); //设置age属性内容
  7. }
  8. public String getName() { //取得name属性
  9. return name;
  10. }
  11. public void setName(String name) { //设置name属性
  12. this.name = name;
  13. }
  14. public int getAge() { //取得age值
  15. return age;
  16. }
  17. public void setAge(int age) { //设置age值
  18. this.age = age;
  19. }
  20. public String getInfo(){ //信息输出
  21. return "姓名:"+this.getName()+"; 年龄:"+this.getAge();
  22. }
  23. }
  24. public class Student extends Person{
  25. private String school; //定义新属性school
  26. public Student(String name, int age, String school) {
  27. super(name, age); //调用父类中的构造方法
  28. this.school = school;
  29. }
  30. public String getSchool() { //取得school属性
  31. return school;
  32. }
  33. public void setSchool(String school) { //设置school属性
  34. this.school = school;
  35. }
  36. @Override
  37. public String getInfo() { //覆写父类中的方法
  38. return super.getInfo()+" ;学校:"+this.getSchool(); //扩充父类方法
  39. }
  40. }
  41. public class Demo {
  42. public static void main(String[] args) {
  43. Student stu = new Student("李四", 25, "北京大学");
  44. System.out.println(stu.getInfo()); //调用覆写过得方法打印输出
  45. }
  46. }
  47.  
  48. 运行结果:
    姓名:李四; 年龄:25 ;学校:北京大学

从上面的程序中可以看出子类中使用super()方法调用了父类中含有两个参数的构造方法,然后再覆写了父类中的getInfo()方法,最后输出内容是被子类覆写过的内容;

super和this十分类似,都可以调用构造方法、属性、普通方法。但是也有区别:

序号 区别点 this super
1 属性访问 访问本类中的属性,如果本类中没有则从父类中查找 访问父类中的属性
2 方法 访问本类中的方法,如果本类中没有则从父类中查找 直接访问父类中的方法
3   调用构造 调用本类构造,必须放在构造方法首行 调用父类构造,必须放在子类构造方法首行
4 特殊 表示当前对象 无概念

既然都可以调用构造方法,那么this和super不可以同时出现,因为都要放在构造方法首行。另外,无论子类如何操作,最终先调用父类中的构造方法


static

static表示“全局”或者“静态”的意思,用来修饰成员变量或成员方法;被static修饰的成员变量和成员方法独立于该类的任何对象,也就说他不依赖于任何实例的对象,当该类被创建时它们也被创建;因此static对象可以在他的任何对象创建之前访问,无需引用任何对象

static修饰的成员变量或成员方法习惯上称作静态变量或静态方法可以直接通过类名来访问,访问语法为:

类名.静态方法名(参数列表)

类名.静态变量名

final

final表示的意思是最终,可以使用final关键字声明类、属性、方法

  • 使用final声明的类不能有子类
  • 使用final声明的方法不能被子类覆写
  • 使用final声明的变量即成为常量,常量不可修改

使用final声明变量时,要求全部字母大写

JAVA面对对象(三)——Super、static、final关键字的更多相关文章

  1. Java 基础 enum枚举类 的创建/使用/接口继承 ,以及手动创建枚举类的对象为:public static final

    笔记: import java.lang.*; /**一:枚举类 : enum Season implements info { s1(),s2(),s3(),s4() }; //s1--s4 放在S ...

  2. JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展

    JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来 ...

  3. java面对对象 关键字this super

    this:this是指向对象本身的一个指针,成员函数内部指向当前类的对象 其实this主要要三种用法: 1.表示对当前对象的引用! 2.表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是 ...

  4. this/super/static/final/匿名对象/继承/抽象类/访问权限修饰符

    1.this关键字的作用     1)调用本类中的属性;     2)调用本类中的构造方法;且只能放首行,且必须留一个构造方法作为出口,即不能递归调用     3)表示当前对象; 2.匿名对象     ...

  5. 乐字节Java继承|方法重写、super和final关键字

    大家好,乐字节的小乐又来了,上一篇是:乐字节Java|JavaBean.继承与权限修饰,也是属于Java继承的,今天继续Java继承. 一. 方法的重写 父类不满足子类的要求,按需改写.注意 方法签名 ...

  6. 关键字——this,super,static,final

    this 理解为当前对象. //测试 public static void main(String[] args){ Person person = new Person(3, "xiaoM ...

  7. java 面对对象(抽象 继承 接口 多态)

    什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接 ...

  8. Java面试题,深入理解final关键字

    final关键字 final的简介 final可以修饰变量,方法和类,用于表示所修饰的内容一旦赋值之后就不会再被改变,比如String类就是一个final类型的类. final的具体使用场景 fina ...

  9. super和final关键字

    一.super关键字 super关键字的使用 JAVA类中使用super来引用父类的属性或者方法,用this来引用当前对象,主要用法: 1.子类的构造函数默认第一行会默认调用父类的无参数构造函数 2. ...

随机推荐

  1. 【记录】GIT 常用命令记录

    1. 查看所有的提交版本,包含当你co到之前提交版本后依旧可以看到以前的日志 git log --graph --pretty=format:'%h -%d %s (%cr)' --abbrev-co ...

  2. mysql如何修改开启允许远程连接 (windows)

    每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 关于mysql远程连接的问题,大家在公司工作中,经常会遇到mysql数据库存储于某个人的电脑上 ...

  3. docker启动失败(can't create unix socket /var/run/docker.sock: is a directory)

    现象 # service docker start Redirecting to /bin/systemctl start docker.service Job for docker.service ...

  4. 20175310 《Java程序设计》第1周学习总结(1)安装虚拟机

    20175310 <Java程序设计>第1周学习总结(1)安装虚拟机 开学前老师在蓝墨云班课上上传了预备作业,其中有一个就是安装Linux操作系统,参考了<>,下载安装Virt ...

  5. jconsole使用

    先看一张图 根据JConsole和任务管理器对比,堆内存大小在250M左右,差不多空跑一个程序用idea启动springboot就是这个大小 项目启动初始类在一万个左右,活动线程50个上下,cpu利用 ...

  6. java 面向对象抽象类和接口

    1.abstract:可以修饰类和方法,被abstract修饰过的称为抽象类和抽象方法. 抽象类: 除了不可以创建对象, 其他和普通类一致. 可以有成员方法.静态方法和构造方法(提供给子类调用)等. ...

  7. 一、java三大特性--封装

    封装字面意思即包装.专业点来说就是数据隐藏,是指利用抽象数据将数据和基于数据的操作封装起来,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能的隐藏细节,只保留一些对外的接口和外部 ...

  8. CF1110E Magic Stones 差分

    传送门 将原数组差分一下,设\(d_i = c_{i+1} - c_i\) 考虑在\(i\)位置的一次操作会如何影响差分数组 \(d_{i+1}' = c_{i+1} - (c_{i+1} + c_{ ...

  9. Idea Live Template代码片段总结

    目录 Idea Live Template总结 一.演示 二.详细介绍 2.1 类型 2.2设置(win默认快捷键win+alt+s) 2.3 快捷键 2.4 实战 Idea Live Templat ...

  10. C# 如何物理删除有主外键约束的记录?存储过程实现

    十年河东,十年河西,莫欺少年穷 本篇主旨是如何物理删除有主外键约束的记录!那么,我们从主外键走起! 下面新建三张有主外键约束的表,分别为:系/学院表,专业班表,学生表,如下: CREATE TABLE ...