java的final应用_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 classinit_java {4 public static voidmain(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 classManager extends Employee{15 private doublemon;16 public Manager(String aname,double asalary,int age,String alaname,doublemon){17 super(aname,asalary,age,alaname);18 this.mon=mon;19 }20 public doublegiveMon(){21 double salary=super.getSalary();22 salary+=this.mon;23 returnsalary;24 }25 }26

27 classEmployee{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,intage,String alaname){33 this.age=age;34 this.name=aname;35 this.salary=asalary;36 this.alaname=alaname;37 }38 publicEmployee(String aname){39 this.alaname=aname;40 }41 publicString getName(){42 System.out.println(this.name);43 return this.name;44 }45 public doublegetSalary(){46 return this.salary;47 };48 publicString getAlaname(){49 return this.alaname;50 }51

52 }

输出结果:

6d179725acbdd14d89c47ee05ef85442.png

如下形式不可以:

1 public classinit_java {2 public static voidmain(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转换成子类的时候,会报错:

d79d4069577fa19028658b928f8594f5.png

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

1 public classinit_java {2 public static voidmain(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 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值