Java学习笔记(八)

来源:互联网 发布:野蛮人大作战 知乎 编辑:程序博客网 时间:2024/06/05 03:38

内部类:就是定义在另外一个类中的类
  分类:成员内部类、静态内部类、匿名内部类
  1、成员内部类:相当于所在类的一个函数,可以被public、default、private修饰,
      在其内部不能定义静态资源,常量除外,可以访问所在外部类的所有资源。
      1-1、成员内部类的对象:
       先实例化所在外部类的对象,然后通过外部类的对象来调用内部类的构造方法。
  2、静态内部类:是在定义类的时候前面加static关键字,可以被public、default、private修饰
   1-1、内部可以有静态资源
   1-2、静态内部类内部方法访问内部资源值,遵循和外部类一样的原则(静态方法只能访问静态资源)
   1-3、静态内部类内部方法访问外部类资源时,只能访问静态资源
  3、匿名内部类:没有名字的类,匿名类无法重用,主要是使用他的对象,实际上是得到一个对象的同时而创建的一个匿名类,匿名类的使用我们着重关注对象。
      InterfaceName object = new interfaceName () {
       //是必须实现的行为
      };
      或者
      SuperAbstractClassName object = new SuperAbstractClassName () {
       //是必须实现的行为
      };
      排序时、比较器;
      事件处理中监听器
      
   匿名类是没有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示:
   
   new  interfacename(or superclass)  {  //类体 }

   这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口,并同时创建该匿名类的一个新实例。
  
  
  4、匿名内部类在GUI中的应用:
   awt组件:重组件,其中的控件是用C或C++语言开发的,速度慢,效率低。
   swing组件:轻组件,其中的控件都是用java语言开发的,速度快,效率高。
   由于历史的原因,有些事件还编排在awt包中。
   4-1、创建一个自定义的窗体程序:
    JFrame类,窗体的父类
    public class MyFrame extends JFrame {
     //属性:自定义窗体所具有的特征,比如有哪行控件,摆放位置以及背景色
     public class MyFrame {
     
     }
     //行为:
    }
   4-2、让指定控件可以接受我们的触发,并作出反应
   
    事件:是窗体程序的一种触发机制。例如:鼠标单击,鼠标双击,按键按下弹起,鼠标拖拽等等,是程序中某种事情的发生。
    
    事件源(控件):由谁引起了某种事件。
    
    事件处理程序:当某种事情发生时,如何应对。
    
    监听器:专门负责某种事件监听的对象,进而可以有针对处理。每种事件都有对应的接口(就是发生某种事件时,都有哪些处理行为)
      自定义一个类型,然后实现相应的事件接口,那么该类对象就有资格作为该事件监听器,运用事件处理程序完成事件处理。
    
    绑定:为事件源(控件)指定事件处理监听器。
    实现事件监听处理:
     1、先确定事件源
      被触发者(控件)
     2、创建监听器类(实现了指定事件接口的类)
      public class XXXHandler implements InterfaceName {
       方法的实现;
      }
      
      InterfaceName handler = new InterfaceName {
       方法的实现;
      };
     3、事件源和监听器(new 监听器类())绑定。
     
     绑定语法:
      事件源对象.addXXXInterfaceName(new XXXHandler());
      事件源对象.addMouseListener(new 监听器类());
   
  5、基本数据类型:
   int short long float double byte boolean char
   包装类:对于每种基本数据类型,都有对应的引用型的类型,既包括对应基本数据又有扩展的属性和行为。
   int       short  long  float  double  byte  boolean  char
   Integer   Short  Long  Float  Double  Byte  Boolean  Char
   
   5-1、装箱:基本类型-->引用型
     自动装箱:由系统编译器完成
   5-2、拆箱:引用型-->基本类型
     自动拆箱:由系统编译器完成
   5-3、包装类对象创建语法:
     1)XXXName XXXobj = new XXXName(基本数据类型的值或字符串);
     2)XXXName XXXobj = 基本数据类型的值;//自动装箱
   5-4、从包装类对象中取出数据的方式:
     1)显示的:包装类对象.XXXValue();
     2)隐式的:直接使用包装类对象进行运算;//自动拆箱
     
  6、枚举类:其中主要包括常量
   意义:确定值的范围,常量的命名都是字符串(明确意义)
   语法:
    访问修饰符 enum 类名 {
     常量;
     属性;
     行为;
    }
    
    //ordinal() 返回值是常量的索引值,索引值从0开始