一: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. 您可能不知道的CSS元素隐藏“失效”以其妙用——张鑫旭

    一.CSS元素隐藏 在CSS中,让元素隐藏(指屏幕范围内肉眼不可见)的方法很多,有的占据空间,有的不占据空间:有的可以响应点击,有的不能响应点击.后宫选秀——一个一个看. { display: non ...

  2. Code Signal_练习题_Make Array Consecutive2

    Description Ratiorg got statues of different sizes as a present from CodeMaster for his birthday, ea ...

  3. Codeforces 981H:K Paths

    传送门 考虑枚举一条路径 \(u,v\),求出所有边经过它的答案 只需要求出 \(u\) 的子树内选出 \(k\) 个可以重复的点,使得它们到 \(u\) 的路径不相交 不难发现,就是从 \(u\) ...

  4. drupal7,注册成功之后想跳转到指定页面,该怎么破?

     1.hook sigup form alter,修改跳转地址 .还没试过 2.安装一下logintoboggan模块,里面有个注册后跳转到哪个页面的设置 这个对于不写代码的是比较方便的方法    3 ...

  5. css类选择器类名覆盖优先级

    code <style> .a{ background: red; } .b{ background: yellow; } </style> <div class=&qu ...

  6. Eclipse 导入 Android studio Exception Ljava/lang/UnsatisfiedLinkEror

    android studio compile fileTree(dir: 'libs', include: ['*.jar']) 没有加载so文件 main 下加入 jniLibs---so文件即可 ...

  7. io流中read方法使用不当导致运行异常的一点

    public class CopyMp3test { public static void main(String[] args) throws IOException { FileInputStre ...

  8. Vue 框架-07-循环指令 v-for,和模板的使用

    Vue 框架-07-循环指令 v-for,和模板的使用 本章主要是写一些小实例,记录代码,想要更详细的话,请查看 官方文档:https://cn.vuejs.org/v2/guide/#%E6%9D% ...

  9. web 应用响应乱码问题

    非西欧语系乱码原因 在没有设置任何内容类型或编码之前,HttpServletResponse使用的字符编码默认是ISO-8859-1.也就是说,如果直接输出中文,在浏览器上就会看到乱码. 有两种方式可 ...

  10. this and super

    this 和 super 的区别:this, 先从本类找属性和方法,本类找不到再从父类找.super, 从父类找. this 和 super 都可以调用构造方法,所以this() 和 super() ...