java final使用
一:final
1:有时候 我们需要一些类,不要被继承。即阻止定义子类。不允许扩展的类叫做final类,如果一个类在定义的时候,用final定义的时候,表示这个类是final类。无法定义子类。
语法 形式:
final class classname{
statement.....
}
2:如果方法被final修饰的话,表示该方法无法被子类方法覆盖,默认情况下,final类中的方法都是final方法。但是实例域却不是自动转换为final。需要注意。
语法形式:
class classname{
public final void get_Name(){
..........
}
}:
3:如果实例域被final修饰的话表示该域不能更改。对于基础数据类型修饰表示常量。
二、强制类型转换:http://www.cnblogs.com/lubocsu/p/5101022.html
之前我们学习数据类型的时候,有个强制数据类型转换,格式:数据类型(想转换的数据类型) 变量名字 =(转换的数据类型) 需要转换的变量。
String a=;
int b=(int) a;
在类中,子类的和超类也有数据的类型转换,子类转换成超类,我们叫做向上转换这种转换是自动完成。超类转换子类,我们叫做向下转换,需要强制转换。语法和强制转换数据类型是一样的。
数据类型(想转换的数据类型) 变量名字 =(转换的数据类型) 需要转换的变量。
注意事项:
1、转换条件是:类和类之间是继承关系。
2:子类=父类 是成立,无需检查,因为特殊的子类也是超类的类型。
3:子类类型 变量=(子类类型)父类对象 这种转换需要做检查,父类是否是子类的引用,如果不是会发生class expection错误。前提父类对象必须是子类的对象引用
package com.company;
public class init_java {
public static void main(String[] args){
Employee man=new Manager("tom",20000,22,"evil",3000);
Manager man1=(Manager) man;
double mon=man1.giveMon();
System.out.println(mon);
}
}
class Manager extends Employee{
private double mon;
public Manager(String aname,double asalary,int age,String alaname,double mon){
super(aname,asalary,age,alaname);
this.mon=mon;
}
public double giveMon(){
double salary=super.getSalary();
salary+=this.mon;
return salary;
}
}
class Employee{
private int age=;
private String name="tom";
private double salary=;
private String alaname="evil";
public Employee(String aname,double asalary,int age,String alaname){
this.age=age;
this.name=aname;
this.salary=asalary;
this.alaname=alaname;
}
public Employee(String aname){
this.alaname=aname;
}
public String getName(){
System.out.println(this.name);
return this.name;
}
public double getSalary(){
return this.salary;
};
public String getAlaname(){
return this.alaname;
}
}
输出结果:

如下形式不可以:
public class init_java {
public static void main(String[] args){
Employee man=new Employee("tom",,,"evil");
Manager man1=(Manager) man;
double mon=man1.giveMon();
System.out.println(mon);
}
}
第一次初始化对象man,不是子类manager的对象。所以在man转换成子类的时候,会报错:

我们可以用instanceof来判断,进行转换。
public class init_java {
public static void main(String[] args){
Employee man=new Employee("tom",,,"evil");
if(man instanceof Manager) {
Manager man1=(Manager) man;
double mon=man1.giveMon();
System.out.println(mon);
}
System.out.println("change fail!");
}
java final使用的更多相关文章
- 深入java final关键字
Java final关键字详解:https://blog.csdn.net/kuangay/article/details/81509164 深入java final关键字 用法注意点和JVM对其进行 ...
- 【笔试题】Java final keyword
Java 知识测试 Java final keyword Question 1 What is the use of final keyword in Java? A. When a class is ...
- Java final修饰符
final的定义: 在英文层面上,final的意思是"最后的","最终的"意思,在Java中也同样表示出此种含义. final的运用对象: final适用于修饰 ...
- Java final 修饰符知识点总结
final从字面上理解含义为“最后的,最终的”.在Java中也同样表示出此种含义. final可以用来修饰变量(包括类属性.对象属性.局部变量和形参).方法(包括类方法和对象方法)和类. 1. fin ...
- Java final方法
之所以要使用final方法,可能是出于对两方面理由的考虑.第一个是为方法"上锁",防止任何继承类改变它的本来含义.设计程序时,若希望一个方法的行为在继承期间保持不变,而且不可被覆盖 ...
- Java final自变量
Java 1.1 允许我们将自变量设成final 属性,方法是在自变量列表中对它们进行适当的声明.这意味着在一个方法的内部,我们不能改变自变量句柄指向的东西.如下所示: /** * Created b ...
- Java final数据
许多程序设计语言都有自己的办法告诉编译器某个数据是"常数".常数主要应用于下述两个方面: 1)编译期常数,它永远不会改变: 2)在运行期间初始化的一个值,我们不希望它发生变化.ss ...
- java final方法的作用
1. 不想让别人修改方法实现. 2. 在方法调用时使用内嵌调用. 3. 有效的“关闭”动态绑定,这样编译器就可以为final方法调用生成更有效的代码. Java编程思想: “然而,大多数情况下,这样做 ...
- Java final static abstract关键字介绍
一,抽象类:abstract 1,只要有一个或一个以上抽象方法的类,必须用abstract声明为抽象类; 2,抽象类中可以有具体的实现方法; 3,抽象类中可以没有抽象方法; 4,抽象类中的抽象方法必须 ...
- Java final修饰形参
转自:http://java.chinaitlab.com/base/836044.html public class BB{ public int i; } public class PP{ pub ...
随机推荐
- try,except用法
lst = ["皇阿玛", "皇额娘", "容嬷嬷", "紫薇"] # 模拟for循环 it = lst.__iter_ ...
- Django REST Framework应用
一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角 ...
- css中的线及vertical-align
行内元素格式化顺序: 相关概念: leading(行间距):指填充在两行文字间的铅条,等于line-height 和 font-size之差,其中一半leading加到文字上方,另一半leading ...
- ORA-00054 资源正忙
现象: 执行update.truncate提示 ORA-00054: resource busy and acquire with NOWAIT specified. 解决方法: 因为系统是RAC系统 ...
- 怎么配置eclipse的联想功能
第一步:打开Eclipse,windows下,打开“window”→“Preferences” :mac下,打开“偏好设置”. 第二步:选择“Java”,展开,“Editor”,选择“Content ...
- Date()对象的设置与解析
怎么获取当前时间? 怎么给Date对象设置特定时间? 将Date对象解析为毫秒数? 将Date对象解析为日月年?获取小时/分钟/秒? 直接new Date()新建对象,可以获取当前时间的Date对象: ...
- 【iOS开发】在ARC项目中使用非ARC文件
ARC的出现应该说是开发者的一大福利,苹果是推荐使用的,但是因为之前没有ARC机制,好多比较好的类库都是使用的非ARC,或是有些大牛还是不喜欢用ARC,封装的类也是非ARC的,想要在自己的ARC项目中 ...
- redis mysql验证 redis_mysql_check.py
# coding:utf-8 import pymysql import redis import sys def con_mysql(sql): db = pymysql.connect(host= ...
- KT_登录_流程图
一.需求 关于系统登录功能,需求如下:1.登录需要输入用户名.密码2.如果连续密码输入错误4次,则自动锁定账号5分钟(也就是说5分钟之内不能再登录) 请根据以上需求,画一个登录操作流程图 二.绘图 版 ...
- Oracle EBS 更改物料说明后,在MTL_SYSTEM_ITEMS_B表中无变化
需要再中文和英文环境同时修改: 程序里,可以通过初始session语言环境来解决.