zoukankan      html  css  js  c++  java
  • java

    一、接口:

    接口对期成员变量和方法有很多限制:

    1.接口中的成员变量默认都是public、static、final类型的,因而必须被显式的初始化;

    2.接口中的方法默认都是public,abstract类型的.

    3.接口中只能包含public,static,final类型的成员变量和public,abstract类型的成员方法.

    4.一个接口不能实现另一个接口,但是它可以继承其它多个接口.

    接口和抽象类的主要区别:

    1.在抽象类中可以为部分方法提供默认的实现,从而避免在子类中重复实现它们,提高代码的可重用性;而接口中只能包含抽象方法.

    二、异常

    异常流程的运行过程

    (1)finally语句不能被执行的唯一情况是先执行了用于终止程序的System.exit()方法。

    (2)return语句用于退出本方法.在执行try或catch代码块中的return语句时,假如有finally代码块,会先执行finally代码块.

    public class WithResult{
        public int methodA(int money) throws SpecialException{
            if(--money<=0) throw new SpecialException("Out of money");
            return money;
        }
        public int methodB(int money)
        {
            try
            {
                System.out.println("Begin");
                int  result=methodA(money);
                return result;
            }
            catch (SpecialException e) {
                // TODO: handle exception
                System.out.println(e.getMessage());
                return -100;
            }
            finally{
                System.out.println("Finally");
            }
        }
        public static void main(String[] args)
        {
            System.out.println(new WithResult().methodB(1));
        }
    }

    结果:

    Begin

    Out of money

    Finally

    "return -100"

    (3)finally代码块虽然在return语句之前被执行,但finally代码块不能通过重新给变量赋值的方式来改变return语句的返回值.

    public static int test()
    {
        int a=0;
        try{
            return a;
        }
        finally
        {
            a=1;
        }
    }
    public static void main(String[] args)
    {
        System.out.println(test());
    }

    尽管先执行a=1;但是return 的值是0
    (4)建议不要在finally代码块中使用return语句,因为它会导致一下两种潜在的错误。第一种是会覆盖try或者catch代码块中的return语句,第二种是丢失异常(try或者catch块中有抛出异常,但是在finally中被无意间取消)。

    在程序运行中,任何中断正常流程的因素都被认为是异常.按照面向对象的思想,java语言用java类来描述异常.所有的异常类的祖先类为java.lang.Throwable类。他有两个方法:getMessage()和printStackTrace()。Throwable类有两个子类:Error类,表示仅靠程序本身无法恢复的严重错误,比如内存空间不足,或者java虚拟机的方法调用栈溢出。Exception类,表示程序本身可以自己处理的异常。

    应该尽量保持异常的原子性.异常的原子性是指当异常发生后,各个对象的状态能够恢复到异常发生前的初始状态,而不至于停留在某个不合理的中间状态.保持异常的原子性有以下办法:

    (1)最常见的方法是先检查方法的参数是否有效,确保当异常发生时还没有改变对象的初始状态.

    (2)编写一段恢复代码,由他来解释操作过程中发生的失败,并且使对象状态回滚到初始状态.

    (3)在对象的临时拷贝上进行操作,当操作成功会,把临时拷贝中的内容覆盖到原来的对象中.

    三、内部类

    内部类:在一个类的内部定义的类称为内部类。

    实例内部类:成员内部类的一种,没有static修饰符。

    (1)在创建实例内部类的实例时,外部类的实例必须已经存在。例如,要创建Inner类,则先必须创建Ourter类。

        Outer.Inner tool=new Outer().Inner()

    (2)实例内部类的实例自动持有外部类实例的应用,可以访问外部类的所有成员。

    (3)外部类实例与内部类实例之间是一对多的关系,一个内部类实例只会引用一个外部类实例,而一个外部类实例可以引用多个内部类实例。

    (4)在实例内部类中不能定义静态成员,而只能定义实例成员。

    (5)如果实例内部类B与外部类A包含同样的成员v,那么在类B中使用this.v表示B的成员,A.this.v表示A的成员

    静态内部类:成员内部类的一种,使用static修饰。

    (1)静态内部类的实例不会自动持有外部类的特定实例的引用,在创建内部类的实例时,不必先创建外部类。

    (2)静态内部类可以直接访问外部类的静态成员,如果要访问外部类的实例成员,就必须先创建外部类的实例。通过外部类的实例去访问。

    (3)在静态内部类中可以定义静态成员和实例成员。

    (4)客户类可以通过完整的类名直接访问静态内部类的静态成员。

  • 相关阅读:
    Azure PowerShell (7) 使用CSV文件批量设置Virtual Machine Endpoint
    Windows Azure Cloud Service (39) 如何将现有Web应用迁移到Azure PaaS平台
    Azure China (7) 使用WebMetrix将Web Site发布至Azure China
    Microsoft Azure News(4) Azure新D系列虚拟机上线
    Windows Azure Cloud Service (38) 微软IaaS与PaaS比较
    Windows Azure Cloud Service (37) 浅谈Cloud Service
    Azure PowerShell (6) 设置单个Virtual Machine Endpoint
    Azure PowerShell (5) 使用Azure PowerShell创建简单的Azure虚拟机和Linux虚拟机
    功能代码(1)---通过Jquery来处理复选框
    案例1.用Ajax实现用户名的校验
  • 原文地址:https://www.cnblogs.com/limingluzhu/p/2830105.html
Copyright © 2011-2022 走看看