接口的基本概念
全局常量和公共的抽象方法所组成。
其中不写public 也是默认全局 interface A{ public static final String name="caohang"; public abstract void print(); public abstaract String getInfo(); } 可以同时实现多个接口,但是实现所所有的抽象方法。Java中面向对象主要体现:
方法的重载与覆写对象的多态性(两种类型) 向上转型:子类对象->父类对象向下转型:父类对象->子类对象对于向上转型,程序自动完成。向下转型,必须声明要传递子类的类型。
对象向上转型:父类 父类对象=子类实例 对象向下转型:子类 子类对象=(子类)父类实例class B extends A
B b=new B();定义子类实例对象 A a=b;发生向上转型关系,子类--->父类 ----------------------------------- A a=new B();发生向上转型关系,子类--->父类 B b=(B)a; 此时发生向下转型。 再设计的过程中,永远不要去继承一个已经实现好的类,只能继承抽象类或者实现接口。一旦发生对象向上传递关系后,方法被子类所覆写。instanceof关键字 返回boolean类型(a2 instanceof A)java中多有的类都有一个公共的父类Object,一个子类只要没有明显继承一个父类,则肯定是Object类的子类
Object中的主要方法
public boolean equals(Object obj);对象的比较 public int hashCode();取得Hash码 public String toString();对象打印调用 toString(),b和b.toString()调用的结果一样。 子类中腹泻Object类中toString()方法,这样直接输出对象调用的是被子类覆写过的toString()方法.equals()方法默认的是比较地址,并不能对内同进行比较。很多类库设计都采用Object作为方法的参数,这样比较方便。* catch中寻找匹配的,不管程序是否产生异常,肯定会执行finally语句。没有finally,则跳到finally之后执行. * Java中异常结构,最常用的类分别是Exception和Error,都是Throwable的子类。 * Exception:程序中出错,可以用try….catch * Error:JVM错误,程序无法处理. * throws 和 throw关键字 * throws定义一个方法,表示此方法不处理异常,交给调用处理。 * throw抛出一个异常,抛出异常的实例化对象。
throw new Exception("自己抛出异常"); * finally语句块作为异常处理的统一出口,避免像throw或return语句。* Exception和RuntimeException * Exception->RuntimeException->IllegalArgumentExcetion->NumberFormatException * Exception在程序中必须使用try….catch处理(出现异常能够执行)
public static int parseInt(String s) throws NumberFormatException * RuntimeException可以不适用try...catch处理,但是出现异常,则交给JVM处理。(程序中断执行)* 自定义异常
class MyException extends Exception{ public MyException(String msg){ super(msg); } } public class DefaultException{ public static void main(String args[]){ try{ throw new MyException(“自定义异常”); }catch(Exception e){ System.out.println(e); } } }* 断言
1.assert boolean 表达式; 2.assert boolean 表达式:详细信息; * 参数 -enableassertions起作用需要javac Test.java ,执行java -ea Test * 表达式1,出现java.lang.AssertionError * 表达式2,自己加信息,java.lang.AssertError:"自己加的信息" * 断言返回boolean,但是不能作为判断语句 * 检查的功能但是不提倡使用断言。* javac -d . PackageDemo01.java ;java 包名.类名; * import
import 包名称.类名;--->手动导入包 import 包名称.*;---->JVM自动加载所需要的类 性能相同,不需要不导入。* public class 和class * public class 文件名称与类名称一致,一个类文件中只能有一个public class,使用class 类名和文件名不一致。 * public 还具有访问权限的问题。pubic class 可被其他文件访问。 * 静态导入 * 一个类中所有方法都是static声明的静态方法,可用
import static 包.类.*; * 静态导入,调用可以直接调用其中的方法,不必用,类.静态方法的形式。* jar 命令主要参数(java archive file ) * C:创建新的文档 * V:生成详细的输出信息 * F:指定存档的文件名
