当前位置: 首页 > news >正文

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

之前我们学习数据类型的时候,有个强制数据类型转换,格式:数据类型(想转换的数据类型) 变量名字 =(转换的数据类型) 需要转换的变量。

1 String  a=2;
2 int   b=(int) a;

 在类中,子类的和超类也有数据的类型转换,子类转换成超类,我们叫做向上转换这种转换是自动完成。超类转换子类,我们叫做向下转换,需要强制转换。语法和强制转换数据类型是一样的。

数据类型(想转换的数据类型) 变量名字 =(转换的数据类型) 需要转换的变量。

注意事项:

1、转换条件是:类和类之间是继承关系。

2:子类=父类 是成立,无需检查,因为特殊的子类也是超类的类型。

3:子类类型  变量=(子类类型)父类对象 这种转换需要做检查,父类是否是子类的引用,如果不是会发生class expection错误。前提父类对象必须是子类的对象引用

 1 package com.company;
 2 
 3 public class init_java {
 4     public static  void  main(String[] args){
 5         Employee man=new Manager("tom",20000,22,"evil",3000);
 6         Manager man1=(Manager) man;
 7         double mon=man1.giveMon();
 8         System.out.println(mon);
 9     }
10 
11 
12 }
13 
14 class Manager extends Employee{
15     private double mon;
16     public Manager(String aname,double asalary,int age,String alaname,double mon){
17         super(aname,asalary,age,alaname);
18         this.mon=mon;
19     }
20     public double giveMon(){
21         double salary=super.getSalary();
22         salary+=this.mon;
23         return salary;
24     }
25 }
26 
27 class Employee{
28     private int  age=22;
29     private String name="tom";
30     private  double salary=20000;
31     private String alaname="evil";
32     public Employee(String aname,double asalary,int age,String alaname){
33         this.age=age;
34         this.name=aname;
35         this.salary=asalary;
36         this.alaname=alaname;
37     }
38     public Employee(String aname){
39         this.alaname=aname;
40     }
41     public String getName(){
42         System.out.println(this.name);
43         return this.name;
44     }
45     public double getSalary(){
46         return this.salary;
47     };
48     public String getAlaname(){
49         return this.alaname;
50     }
51 
52 }

输出结果:

如下形式不可以:

 1 public class init_java {
 2     public static  void  main(String[] args){
 3         Employee man=new Employee("tom",20000,22,"evil");
 4         Manager man1=(Manager) man;
 5         double mon=man1.giveMon();
 6         System.out.println(mon);
 7     }
 8 
 9 
10 }

 

第一次初始化对象man,不是子类manager的对象。所以在man转换成子类的时候,会报错:

 我们可以用instanceof来判断,进行转换。

 1 public class init_java {
 2     public static  void  main(String[] args){
 3         Employee man=new Employee("tom",20000,22,"evil");
 4         if(man instanceof Manager) {
 5             Manager man1=(Manager) man;
 6             double mon=man1.giveMon();
 7             System.out.println(mon);
 8         }
 9         System.out.println("change fail!");
10 
11     }

 

转载于:https://www.cnblogs.com/evilliu/p/7675762.html

相关文章:

  • 微信小程序前端坑整理
  • CF441D
  • path--diff
  • 前端基础之html
  • MySQL半同步复制
  • 通过ldap验证svn服务
  • codevs 2620 战壕
  • vue-cli脚手架安装
  • keil 赋值之后再声明变量提示错误error: #268: declaration may not appear after executable statement in block...
  • 正质因数分解
  • 110. Balanced Binary Tree
  • 进程与fork()、wait()、exec函数组
  • Centos_linux系统的区别及实际查看
  • 给Extjs的window弹窗的关闭事件添加验证
  • mysql导入存储过程
  • [译] React v16.8: 含有Hooks的版本
  • Flex布局到底解决了什么问题
  • java2019面试题北京
  • js操作时间(持续更新)
  • JS字符串转数字方法总结
  • mysql innodb 索引使用指南
  • Redash本地开发环境搭建
  • spring-boot List转Page
  • ViewService——一种保证客户端与服务端同步的方法
  • Webpack 4 学习01(基础配置)
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 番外篇1:在Windows环境下安装JDK
  • 飞驰在Mesos的涡轮引擎上
  • 深度学习入门:10门免费线上课程推荐
  • 深入浏览器事件循环的本质
  • 使用common-codec进行md5加密
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 微信小程序开发问题汇总
  • 微信小程序填坑清单
  • 学习HTTP相关知识笔记
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • #Linux(帮助手册)
  • (3)选择元素——(17)练习(Exercises)
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)mysql使用Navicat 导出和导入数据库
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .net CHARTING图表控件下载地址
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .Net MVC + EF搭建学生管理系统
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 依赖注入和配置系统