zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    Hadoop入门进阶课程12--Flume介绍、安装与应用案例
    Hadoop入门进阶课程11--Sqoop介绍、安装与操作
    Hadoop入门进阶课程10--HBase介绍、安装与应用案例
    Hadoop入门进阶课程9--Mahout介绍、安装与应用案例
    Hadoop入门进阶课程8--Hive介绍和安装部署
    Hadoop入门进阶课程7--Pig介绍、安装与应用案例
    zookeeper启动失败,但是状态显示已启动的原因
    微信小程序企业给零钱打款 提示未配置api发起,请查看产品中心企业付款配置
    java利用反射交换两个对象中的字段相同的字段值
    centos上 小程序部署 nginx+https+ssL 提示错误:对应的服务器 TLS 为 TLS 1.0 ,小程序要求的 TLS 版本必须大于等于 1.2
  • 原文地址:https://www.cnblogs.com/evilliu/p/7675762.html
Copyright © 2011-2022 走看看