JAVA面对对象(三)——Super、static、final关键字
Super
使用super关键字可以直接调用父类中的构造方法、属性、普通方法
super调用父类构造方法的操作,与this调用构造方法一样,语句必须放在子类构造方法的首行
public class Person { //定义父类Person
private String name; //定义name属性
private int age; //定义age属性
public Person(String name,int age) { //通过构造方法设置name、age
this.setName(name); //设置name属性内容
this.setAge(age); //设置age属性内容
}
public String getName() { //取得name属性
return name;
}
public void setName(String name) { //设置name属性
this.name = name;
}
public int getAge() { //取得age值
return age;
}
public void setAge(int age) { //设置age值
this.age = age;
}
public String getInfo(){ //信息输出
return "姓名:"+this.getName()+"; 年龄:"+this.getAge();
}
}
public class Student extends Person{
private String school; //定义新属性school
public Student(String name, int age, String school) {
super(name, age); //调用父类中的构造方法
this.school = school;
}
public String getSchool() { //取得school属性
return school;
}
public void setSchool(String school) { //设置school属性
this.school = school;
}
@Override
public String getInfo() { //覆写父类中的方法
return super.getInfo()+" ;学校:"+this.getSchool(); //扩充父类方法
}
}
public class Demo {
public static void main(String[] args) {
Student stu = new Student("李四", 25, "北京大学");
System.out.println(stu.getInfo()); //调用覆写过得方法打印输出
}
} 运行结果:
姓名:李四; 年龄: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关键字的更多相关文章
- Java 基础 enum枚举类 的创建/使用/接口继承 ,以及手动创建枚举类的对象为:public static final
笔记: import java.lang.*; /**一:枚举类 : enum Season implements info { s1(),s2(),s3(),s4() }; //s1--s4 放在S ...
- JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展
JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来 ...
- java面对对象 关键字this super
this:this是指向对象本身的一个指针,成员函数内部指向当前类的对象 其实this主要要三种用法: 1.表示对当前对象的引用! 2.表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是 ...
- this/super/static/final/匿名对象/继承/抽象类/访问权限修饰符
1.this关键字的作用 1)调用本类中的属性; 2)调用本类中的构造方法;且只能放首行,且必须留一个构造方法作为出口,即不能递归调用 3)表示当前对象; 2.匿名对象 ...
- 乐字节Java继承|方法重写、super和final关键字
大家好,乐字节的小乐又来了,上一篇是:乐字节Java|JavaBean.继承与权限修饰,也是属于Java继承的,今天继续Java继承. 一. 方法的重写 父类不满足子类的要求,按需改写.注意 方法签名 ...
- 关键字——this,super,static,final
this 理解为当前对象. //测试 public static void main(String[] args){ Person person = new Person(3, "xiaoM ...
- java 面对对象(抽象 继承 接口 多态)
什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接 ...
- Java面试题,深入理解final关键字
final关键字 final的简介 final可以修饰变量,方法和类,用于表示所修饰的内容一旦赋值之后就不会再被改变,比如String类就是一个final类型的类. final的具体使用场景 fina ...
- super和final关键字
一.super关键字 super关键字的使用 JAVA类中使用super来引用父类的属性或者方法,用this来引用当前对象,主要用法: 1.子类的构造函数默认第一行会默认调用父类的无参数构造函数 2. ...
随机推荐
- ping 127.0.0.1和ping本地ip分别测试什么?
ping 127.0.0.1 是你本地的回环地址! 实际上只要是127.0.0.1到127.255.255.255都是回环地址!都是可以PING检查的! 它能ping通,说明你的TCP/IP协议栈没问 ...
- pandas中DataFrame对象to_csv()方法中的encoding参数
当使用pd.read_csv()方法读取csv格式文件的时候,常常会因为csv文件中带有中文字符而产生字符编码错误,造成读取文件错误,在这个时候,我们可以尝试将pd.read_csv()函数的enco ...
- map && multimap
map map 的意思是映射.用法一般是 map<char, int>mp 按照我的理解,map 类似于一个高级的数组.前面的数据类型 char 相当于下脚标,而数组元素的值就对应 ...
- leetcode 235. Lowest Common Ancestor of a Binary Search Tree 236. Lowest Common Ancestor of a Binary Tree
https://www.cnblogs.com/grandyang/p/4641968.html http://www.cnblogs.com/grandyang/p/4640572.html 利用二 ...
- Qt Creator中根据为Windows系统还是Linux系统对源码进行条件编译
方法1: 在.h和.cpp文件中,针对需要不同平台编译的代码:添加上如下的条件编译指令: #ifdef 标识符 程序段1 #else 程序段2 #endif 举例说明如下: //Windows系统包含 ...
- 深入浅出的webpack4构建工具--webpack4+vue+vuex+mock模拟后台数据(十九)
mock的官网文档 mock官网 关于mockjs的优点,官网这样描述它:1)可以前后端分离.2)增加单元测试的真实性(通过随机数据,模拟各种场景).3)开发无侵入(不需要修改既有代码,就可以拦截 A ...
- python基础学习第五天
li=[1,2,33,-1,'dbssd',[4,5,6],{4:'rfw',5:'re'}]del(li[1])print(li)print(type(li))#访问元素print(li[0])pr ...
- python3.6.4源码安装
该脚本适合centos6和ubuntu用,关于debian可以根据脚本中的范例自己添加 微笑哥与你每天进步一点点 #!/bin/bash##Check systemcheck_sys(){ local ...
- java 面向对象基本概念
1.面向对象与面向过程 (1).都是解决问题的思维方式,都是代码组织的方式. (2).解决简单问题可以使用面向过程 (3).解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程. 2.面向对 ...
- 异步方法(promise版)出错自调用
/** * [*promisePlus promise封装的异步,既然是异步,必然会成功或者失败,理论上失败了就失败了,但是 * 失败后能否让他过多长时间自动再调用自己呢,如果调用指定的次数还是失败, ...