黑马程序员---Java基础总结--多态

来源:互联网 发布:sqlserver 维护计划 编辑:程序博客网 时间:2024/06/02 05:37

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

多态:可以理解为事物存在的多种体现形态。

多态的体现:父类的引用指向了自己的子类对象。可以挺高程序的扩展性。
多态的前提:必须是类与类之间有关系,要么继承,要么实现。子类覆盖父类的函数才可以被实现。
在多态成员函数的特点:在编译时期,参阅引用型变量所属的类中是否有调用的方法,如果有,编译通过,如果没有,编译失败。在运行时期,参阅对象所属的类中是否有调用方法。简单总结是:成员函数在多态调用时候,编译看左边,运行看右边。在多态中,成员变量的特点是:无论编译和运行都参考左边。
Object:是所有对象的直接后者间接父亲。所有对象都具备Object类中的功能。
内部类的访问规则:内部类可以直接访问外部类中的成员,包括私有。外部类要访问内部类,必须建立内部类对象。当内部类定义在外部类的成员位置上,而且非私有,可以外部其他类中直接建立内部类对象。格式:外部类名.内部类名 变量名=外部类对象.内部类对象例如:Outer.Inner in=new Outer().new Inner();当内部类在成员位置上,可以被成员修饰符修饰。比如 private 将内部类的在外部类中进行封装。 static 内部类就具备static特性。当内部类中定义了静态成员,该内部类必须是static的。
内部类定义在局部时,不可以被成员修饰符修饰,可以直接访问外部类中的成员,因为还有持有外部类中的引用。但是不可以访问它所在的局部变量,只能访问被final修饰的局部变量。
匿名内部定义的前提:内部类必须是继承一个类或者实现接口。
异常就是程序在运行时出现不正常的情况。异常的由来:问题也是现实生活中一个具体事物,也可以通过java的类的形式进行描述,并封装成对象。java对严重的问题用error类进行描述。对于非严重的java通过Exception类进行描述。
异常和错误会向上抽取形成 Throwable类。(error类和Exception类的父类)。
异常处理格式:try{需要被检测的代码} catch(异常类 变量){处理异常的代码:(处理方式)} finally{一定会运行的语句} 可以使用String getMessage()、toString、printStackTrace获取异常。其中printStackTrace(打印异常堆栈的跟踪信息)是java虚拟机中默认的获取异常方式。
throws关键字声明了该功能有可能会出现问题。对调用进行处理,如果不处理编译失败。
多异常处理时,应该声明具体的异常,这样处理可以更具体,声明几个异常,就对应几个catch块,不要定义多余的catch块。如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。
自定义异常,必须继承Exception。异常类和异常对象都需要被抛出,它们都具有可抛性。Throwable体系是具有可抛性的。所以它们才可以被throws和throw操作。
throws使用在函数上,后面跟的是异常类,可以跟多个,用逗号隔开。throw使用在函数内,后面跟的是异常对象。
Exception中有一个特殊的的子类异常RuntimeException 运行时异常。如果在函数内容抛出该异常,函数可以不用声明,编译一样通过。如果在函数上声明了该异常。调用者可以不用进行处理,编译一样通过。该异常发生时,希望程序停止,因为在运用时,出现了无法继续运算的情况。所以不需要让调用者处理。
自定义异常时,若果该异常发生,无法再继续进行运算,那么就让自定义异常类继承RuntimeException。
异常分为两种:一是编译时被检测的异常。一种是编译时不被检测的异常。(运行时异常,RuntimeException以及其子类)
子类再覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。如果父类方法抛出多个异常,那么子类再覆盖方法时,只能抛出父类异常的子集。如果父类或者接口的方法中没有异常抛出,那么子类再覆盖方法时,也不可以抛出异常。只能做try处理。
异常的好处:将问题封装成对象。将正常流程代码和问题处理代码相分离,方便于阅读。
异常的处理原则:
1、处理方式有两种:try或者throws
2、调用到的抛出异常的功能时,抛出几个,就处理几个。一个try对应多个catch.
3、多个catch,父类的catch放到最下面。
4、catch内,需要定义针对性的处理方式。不要简单的定义printStackTrace输出语句,也不要不写。
   当捕获的异常,本功能处理不了时,可以继续在catch中抛出。
   try
   {
throw new Aexception()
   }
  catch(Aexception  e)
  {
throw e;
  }
  如果该异常处理不了,但并不属于该功能出现的异常。可以将异常转换后,在抛出和该功能相关的异常。
  或者异常可以处理,当需要将异常长生的和本功能的相关问题提供出去,当调用者知道,并处理。也可以将捕获的异常处理后,转换新的异常。
  try
  {
throw new AException();
  }
  catch (AException e)
  {
throw new BException();
  }
包 :对类文件进行分类管理。给类提供多层命名空间。写在程序文件的第一行。类名的全称是:包名.类名。包也是一种封装形式。包名的字母都小写。
包在编译时,javac -d 存放目录 (d:\java\) 文件名.java    在运行: java 包名.文件名
包与包之间的访问,被访问的包中的类以及类中的成员,需要public修饰。不同包中的子类还可以直接访问父类中的被protected权限修饰的成员。
protected :保护对象。在继承中为了保护父类中方法安全。
           public  protected  default  private 
同一个类中   OK        OK          OK      OK
同一个包中   OK        ok          ok
子类中       ok        ok
不同包中     ok
import 导入的包中的类。

jar包 java的压缩包。

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

0 0