一: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使用的更多相关文章

  1. 深入java final关键字

    Java final关键字详解:https://blog.csdn.net/kuangay/article/details/81509164 深入java final关键字 用法注意点和JVM对其进行 ...

  2. 【笔试题】Java final keyword

    Java 知识测试 Java final keyword Question 1 What is the use of final keyword in Java? A. When a class is ...

  3. Java final修饰符

    final的定义: 在英文层面上,final的意思是"最后的","最终的"意思,在Java中也同样表示出此种含义. final的运用对象: final适用于修饰 ...

  4. Java final 修饰符知识点总结

    final从字面上理解含义为“最后的,最终的”.在Java中也同样表示出此种含义. final可以用来修饰变量(包括类属性.对象属性.局部变量和形参).方法(包括类方法和对象方法)和类. 1. fin ...

  5. Java final方法

    之所以要使用final方法,可能是出于对两方面理由的考虑.第一个是为方法"上锁",防止任何继承类改变它的本来含义.设计程序时,若希望一个方法的行为在继承期间保持不变,而且不可被覆盖 ...

  6. Java final自变量

    Java 1.1 允许我们将自变量设成final 属性,方法是在自变量列表中对它们进行适当的声明.这意味着在一个方法的内部,我们不能改变自变量句柄指向的东西.如下所示: /** * Created b ...

  7. Java final数据

    许多程序设计语言都有自己的办法告诉编译器某个数据是"常数".常数主要应用于下述两个方面: 1)编译期常数,它永远不会改变: 2)在运行期间初始化的一个值,我们不希望它发生变化.ss ...

  8. java final方法的作用

    1. 不想让别人修改方法实现. 2. 在方法调用时使用内嵌调用. 3. 有效的“关闭”动态绑定,这样编译器就可以为final方法调用生成更有效的代码. Java编程思想: “然而,大多数情况下,这样做 ...

  9. Java final static abstract关键字介绍

    一,抽象类:abstract 1,只要有一个或一个以上抽象方法的类,必须用abstract声明为抽象类; 2,抽象类中可以有具体的实现方法; 3,抽象类中可以没有抽象方法; 4,抽象类中的抽象方法必须 ...

  10. Java final修饰形参

    转自:http://java.chinaitlab.com/base/836044.html public class BB{ public int i; } public class PP{ pub ...

随机推荐

  1. 小程序:获取input输入的值

    wxml <input placeholder='输入你的姓名' value='{{name}}' bindblur='nameblur'></input>   js data ...

  2. listview更改选中时item背景色(转)

    默认情况下使用ListView背景色是黑色,选中item的高亮颜色是菊黄色,很多时候不得不自己定义背景色或者背景图 android:cacheColorHint="@android:colo ...

  3. js-NodeList对象和HTMLCollection对象

    getElementsByName()和getElementsByTagName()都返回NodeList对象,而类似document.images和document.forms的属性为HTMLCol ...

  4. P/Invoke出现错误 System.NullReferenceException”类型的未经处理的异常在 未知模块。 中发生 未将对象引用设置到对象的实例。

    问题 “System.NullReferenceException”类型的未经处理的异常在 未知模块. 中发生 未将对象引用设置到对象的实例. 解决方案 1.尝试 用管理员身份运行CMD,输入nets ...

  5. react组件直接在document上添加事件

    demo:比如组件里有个div写的框框,点击document body的背景色变红,点击div写的框框没效果 componentDidMount(){ document.onclick = this. ...

  6. C# 新建文档CreateNewDocument

    // Copyright 2010 ESRI// // All rights reserved under the copyright laws of the United States// and ...

  7. eclipse中DDMS 视图中sdcard中文件导入的处理

    首先需要说明下,这里说的sdcard的权限并不是指在Android application程序中设置sdcard的权限读 取问题.而是指在DDMS看到的目录下的那个sdcard目录的权限问题.     ...

  8. Acticity的生命周期和启动模式

    典型情况下的生命周期 onCreate 表示创建Acticity,在这个方法中可以做一些初始化的操作,如加载界面布局资源,初始化Activity所需的数据 onRestart 表示重新启动Activi ...

  9. winform listbox增加鼠标双击事件

    在Form.Designer.cs文件中对于listBox处理: listBox.MouseDoubleClick += new system.Windows.Forms.MouseEventHand ...

  10. Replication--复制Token

    --创建tokenDECLARE @tokenID AS INT;EXEC sys.sp_posttracertoken @publication = @publication,@tracer_tok ...