老男孩的替身

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1. 抽象类

描述一类事物的时候,发现确实存在某种行为,但是目前这种行为不具体,这时候应该抽取这种行为的声明,而不去实现这种行为,这时候这种行为我们成为抽象行为,这时候应该使用抽象类。

要注意的细节:

①    如果一个方法没有方法体,那么该方法必须使用abstract修饰。

②    如果一个类函数有抽象方法,那么这个类肯定是一个抽象类或接口。

③    抽象类不能创建方法,抽象类是含有构造方法的。

④    抽象类可以存在非抽象方法与抽象方法。

⑤    抽象类可以不存在抽象方法。

⑥    非抽象类继承抽象类的时候,必须要把抽象类中所有抽象方法全部实现。

⑦    abstract不能与以下关键字一起使用,static,private,final

  1. 接口

接口的定义格式:

Interface 接口名{

成员变量

 

成员函数….

}

接口的作用:

①    程序的解耦

②    定义约束的规范

③    拓展功能

                  接口要注意的细节

①    接口中的成员变量都是常量,默认的修饰符是public static final。

②    接口中的方法全部都是抽象方法,默认的修饰符:public abstract。

③    接口不能创建对象。

④    接口是没有构造函数的。

⑤    非抽象类通过implements实现接口的时候,必须要把接口中所有方法全部实现。

         接口与类之间的关系:实现关系

          注意:一个类可以实现多个接口。

          接口与接口之间的关系:继承关系

          注意:一个接口可以继承多个接口。

 

  1.  多态,父类的引用类型变量指向了子类的对象,或者是接口的引用类型变量指向了接口实现类的对象。

要注意的细节

①    多态情况下,如果子父类存在同名的成员变量时,访问的是父类的成员变量。

②    多态情况下,如果子父类存在同名的非静态函数时,访问的是子类的成员变量。

③    多态情况下,如果子父类存在同名的静态函数时,访问的是父类的成员变量。

④    多态情况下,不能访问子类特有的成员。

多态的应用:

①    多态用于形参类型的时候,可以接收更多类型的数据。

②    多态用于返回值类型的时候,可以返回更多类型的数据。

二  强制类型转换:

1.来源:由于目前多态情况下不能访问子类特有的成员。

 

2.如果需要访问子类特有的成员,那么需要进行类型强制转换。

小数据类型----------->大的数据类型       自动类型转换

大数据类型------------>小的数据类型       强制类型转换     小数据类型

变量名=(小数据类型)大数据类型;

 

3.引用数据类型的转换

小数据类型----------->大的数据类型       自动类型转换

大数据类型------------>小的数据类型       强制类型转换

类型转换最常见的问题;java.lang.ClassCastException。强制类型转换失败。

If(a instanceof Fish)

接口  变量=new 接口实现类的对象

三  内部类

定义:一个类定义在另一个类的内部,那么该类就称作为内部类。

内部类的class文件名:外部类$内部类。便于区分该class文件是属于哪个外部类的

  内部类的类别:

  1. 成员内部类:

成员内部类的访问方式:

  方式一在外部类提供一个方法创建内部类的对象进行访问。

方式二:在其他类直接创建内部类的对象。格式:外部类。内部类 变量名

=new 外部类().new内部类()。

 注意:如果是一个静态内部类,那么在其他类创建的格式:

外部类.内部类  变量名=new 外部类.内部类();

内部类的应用场景:我们在描述A事物的时候,发现描述的A事物内部还存在另外一个比较复杂的事物B的时候,而且这个比较复杂事物B还需要访问A事物的属性等数据,那么这时候我们就可以使用内部描述B事物。

  1.  局部内部类

在一个类的方法内部定义另外一个类,那么另外一个类就称作为局部内部类。

注意:

如果局部内部类访问了一个局部变量,那么该局部变量必须使用final修饰。

  1.    匿名内部类

①    定义:没有类名的类就称为匿名内部类。

②    好处:简化好写。

③    使用前提:必须存在继承或者实现关系才能使用。

         匿名内部类一般用于实参

四Throwable以及错误

   异常:

Throwable分为error和exception,exception又分为运行异常和编译时异常                  1..throwable常用的方法

tostring() 返回当前对象的完整类名 +病态信息。

Throwable t=new Throwable();

String info = t.tostring();

System.out.println(“tostring:”+info);//java.lang.Throwable  包类+类名=完整类名

 

getMessage() 返回的是创建Throwable传入的字符串信息。

Throwable t=new Throwable(“头晕,感冒….”);

String message = t.getMessage ();

System.out.println(“tostring:”+info);//java.lang.Throwable

System.out.println(“getMessage:”+message);

printstackTrace() :打印异常的栈信息。  

1.1error:错误一般是用于jvm或者是硬件引发的问题

1.2Exception异常 是需要代码去处理

如何区分error与Exception

如果程序出现不正常的信息,如果不正常的信息以error肯定是一个错误,

如果是以Exception结尾,那么肯定就是一个异常。

      1.3异常的处理:

方式一:捕获处理。

   捕获处理的格式:

try{

可能发生异常的代码;

}catch(捕获的异常类型 变量名)

{处理异常的代码

}

1.3.1捕获处理要注意的细节:

①    如果try-catch块外面的代码可以正常执行。

②    如果try块中出了异常代码,那么在try块中出现异常代码后面的代码是不会执行的。

③    一个try块后面可以跟多个catc模块的。

 

1.4方式二:抛出处理。

①    如果一个方法的内部抛出了一个异常对象,那么必须在方法上声明抛出。

②    如果调用了一个声明抛出异常的方法,那么调用者必须处理异常。

③    如果一个方法内部抛出了一个异常对象,那么throw语句后面的代码都不会再执行了

④    在一种情况下,只能抛出一种类型异常对象。

1.4.1   throw与throws两个关键字:

②    throw关键字是用于方法内部的,throws是用于方法声明上的。

②throw 是用于方法内部抛出一个异常对象的,throws关键字是用于在方法声明上声明抛出异常类型的。

③    Throws关键字后面只能有一个异常对象,throws’后面一次可以声明抛出多种类型的异常

 

posted on 2018-01-23 20:20  贾老板  阅读(121)  评论(0编辑  收藏  举报