java基础复习(12)--类型转换,异常概念

一个对象只能有一种确切类型

虚方法调用--后期绑定

instance判断变量的类型

 

public boolean equals(Object o){
     if(o instanceof Bird){
         Bird bird = (Bird)o;
         //调用 Bird的方法
         bird.fly();
     }
}
 



所谓造型就是java对象间的类型转换
java的对象造型可以分为两种情况:
--自动造型
--强制造型

在造型前可以使用instanceof 运算符测试一个对象的类型
o instanceof SuperMan
o instanceof Man
对象的造型只用在有继承关系的对象之间

抽象类可以有构造器,既可以有抽象方法,也可以有实现的方法,接口除了抽象方法,没有其

他方法,接口可以继承多个接口,抽象类只能继承一个父类

接口较灵活,应多用接口,少用抽象类

能够进行相互转型的类或对象必须位于同一棵继承树上。编译器会检查转型的合理性。

 

public class Animal{
protected int legs;
protected Animal(int legs){
this.legs = legs;
}
}

public class Spider extends Animal{
  public Spider(){
      super(8);//由于父类未提供默认的构造函数,所以必须调用父类的有参构造器
  }
}
 



多态的实现条件:1:有继承;2:有重写;3:父类引用指向子类对象
调用构造函数必须是构造器的第一条语句,在普通方法中,不能调用构造器

内部类
允许一个类的定义出现在另一个类中,将处于另一个类中的“寄生类”称为“内部类”,也称为“类属类“

内部类其实看成是外部类的一个属性。

异常:
不要指望你的程序永远不会出错
java程序运行过程中所发生的异常事件可分为两类:
--错误:jvm系统内部错误,资源耗尽的呢个严重情况
--异常:其他因编程错误或偶然的外在因素导致的一般性问题,例如:
        对负数开平方根
        空指针访问
        试图读取不存在的文件
        网络连接中断

 


java中除以零:
1/0   -1/0     0/0 均产生异常;

1.0/0   -1.0/0 0.0/0 分别为Infinity -Infinity   NaN

1/0.0   -1/0.0 0/0.0 分别为Infinity -Infinity   NaN

1.0/0.0 -1.0/0.0 0.0/0.0 分别为Infinity -Infinity   NaN

可见,当为除零时两个都是整数时会发生异常,有一个是double时分别为Infinity -Infinity   NaN

可以用类似语句来检测无穷大 if (Double.isInfinite(e)) System.out.println("检测到无穷大");

  double c = 1.0, d = 0;
       if(Double.isInfinite(c / d))
       System.out.println("infinity");
 

 

你可能感兴趣的:(java,jvm,编程,C++,c)