java 基础 4 super、final关键字及上转型对象的使用
来源:互联网 发布:c语言 运算符 编辑:程序博客网 时间:2024/05/16 14:36
一、super 关键字的使用
当子类的构造方法创建一个子类对象时,子类的构造方法总是调用父类的某个构造方法。也就是说,如果子类的构造方法没有明显的指明使用父类的那个构造方法,子类就调用父类不带参的构造方法。
由于子类不继承父类的构造方法。因此子类在其构造方法中需使用 super 关键字来调用父类的构造方法,而且 super 必须是子类构造方法中的第一行代码,那如果在子类的构造方法中,没有明显的写出 super 关键字,来调用父类的某个构造方法,默认有 super();
实例:
package com.test;
class student {
int number;
String name;
// 无参构造
student() {
}
// 有参构造
student(int number, String name) {
this.number = number;
this.name = name;
System.out.println("我的名字:" + name + "," + "学号是:" + number);
}
}
class Unstudent extends student {
boolean 婚否;
Unstudent(int number, String name, boolean b) {
super(number, name);// 调用父类的带参构造方法
婚否 = b;
System.out.println("婚否=" + 婚否);
}
}
public class Test {
public static void main(String[] args) {
Unstudent zhang = new Unstudent(9901, "何晓琳", false);
}
}
结果:
我的名字:何晓琳,学号是:9901
婚否=false
除掉 super 关键字的结果:子类对象将调用 默认的模式:
默认的 super();方法:
我们不将 super 关键字 放在 方法内的第一行的结果:·········程序将出现错误!!!
二、final关键字的使用:
1. final 关键字不仅可以修饰类、成员变量和方法中的局部变量。还可以声明类,用final声明的类,将不能被继承,既不能有子类。
例如:在 java 中 不允许 用户程序 扩展 String 类,为此 java 将 它 修饰为 final 类。
2. 如果使用final 修饰 父类中的一个方法,那么这个方法不允许子类重写,也就是说,不允许隐藏可以继承 final 修饰的方法。(老老实实继承,不能做任何篡改!!)
3.常量:
使用 final 修饰 成员变量或局部变量,那么它就是常量。常量在运行期间不允许发生变化,所以常量在声明的时没有默认值,因此在声明常量时,必须指定常量的值!!!
三、上转型对象:(在继承中)
我们说“老虎是动物”,这时老虎就失去了老虎独有的属性和功能。从人的思维方式上看这是上溯思维方式,在java中也有类似的思维方式,就是 上转型对象。
例:
Animal a ;
a= new Tiger();
或
Animal a ;
Tiger b = new Tiger();
a=b;
这时就称 a 是 b 的 上转型对象。
上转型对象:
1. 对象的 上转型对象 的实体是子类负责创建的。但上转型对象会失去原对象的一些属性和动能。(上转型对象相当于子类对象的一个“简化”对象)。
2. 具有的特点:
a.不能操作子类新增的成员(失去的属性)和方法(失去的行为)。
b. 可以访问子类继承或隐藏的成员变量 、 继承的方法 和 子类重写的实例方法。
c.操作子类继承和重写的实例方法,其作用等价于子类对象去调用这些方法。因此,子类重写父类 的某个实例方法后,当对象的上转型对象调用这个实例方法时u,一定是调用了子类重写的实例方法。
注:
1). 不要将父类的对象和子类的上转型对象 混淆。
2).可以将对象的上转型对象再强制转换到一个子类对象,这时,该子类对象又具备了 子类对象所具有的属性和功能。
3).不可以将父类创建的对象的引用赋给子类声明的对象。(不能说:“人是中国人”)。
实例:
//Monkey--类人猿
class Monkey {
void crySpeak(String s ){
System.out.println(s);
}
}
class People extends Monkey {
//新的方法
void jisuan( int x , int y){
int sum;
sum =x+y;
System.out.println(sum);
}
void crySpeak(String s){
System.out.println("重写父类的方法:"+s);
}
}
public class Test {
public static void main(String[] args) {
System.out.println("上转型对象:");
Monkey monkey = new People();//monkey是peolep的上转型对象
monkey.crySpeak("cry");//注意:此处的monkey调用的是子类重写的crySpeak()方法
//monkey.jisuan();//此处访问错误 ,是因为 monkey是peolep的上转型对象,不能访问子类新的方法(下有 配图: 图_01)
People people = (People) monkey;//将上转型对象强制转化为子类的对象
people.jisuan(4, 9);
System.out.println("-------------------------------------------------");
System.out.println("子类对象:");
People people2 = new People();//调用子类的对象
people2.crySpeak("People");
people2.jisuan(8, 9);
}
}
输出结果:
图_01:--特点 a 的应用:
0 0
- java 基础 4 super、final关键字及上转型对象的使用
- java基础----对象的上转型对象
- 关键字super使用 例5_6 对象上转型对象 5_7
- JAVA基础--关键字 final/static/this/super
- JAVA基础--关键字 final 、static、this、super
- Java面向对象8——对象转型,动态绑定,抽象类,final关键字及接口
- java基础:final关键字的深入使用
- JAVA基础 final、static关键字的使用
- java基础:final关键字的深入使用
- Java面向对象基础--Static关键字的作用及使用
- 上转型对象的使用
- Java super和final关键字
- Java新关键字final,super
- java基础---对象的转型
- this关键字及super关键字的使用
- java基础—java中使用final关键字的总结
- Java super关键字的使用
- Java关键字final、static、this、super使用总结
- rxJava学习
- 网页添加(标签页)左上角的图标
- 摄影的艺术
- Activity切换淡入淡出效果
- cocos 2dx 3.12 学习笔记(四) ButtonTest
- java 基础 4 super、final关键字及上转型对象的使用
- C++输入带空格的char*字符串,通过string类型转换
- Linux中想进入一个目录、 在目录下创建文件、在文件内部删除文件 各需要什么权限?
- Hello Mr.J——shiro 实现session共享
- 集合
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis) .
- ORACLE 11G 性能诊断优化之ASH实战分析详解
- Java 学习笔记(0x04) this关键字
- android --activity 中的控件设置侦听(onclickListener)无效,自定义adapter不执行getView 方法