zoukankan      html  css  js  c++  java
  • 《Java语言程序设计(基础篇)》读书笔记(五)

    《Java语言程序设计(基础篇)》读书笔记(五)
    作者:wangzz
    转载请注明出处
    如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢!

    第十四章 抽象类和接口
    1、抽象类
    简单的说,包含了抽象方法的类叫作抽象类。抽象类的声明方式如下:
    public abstract class AbstractClassName {
      //构造方法,定义为protected类型
      protected AbstractClassName() {
      }
      //非抽象方法
      public void method1 { 
      }
      //抽象方法
      public abstract int method2 {
      }
    }
    抽象类具有以下特点:
    不能创建抽象类的实例对象;
    ②一个包含抽象方法的类必须声明为抽象类;
    抽象类的构造方法要定义为protected类型,因为它只被子类使用;

    2、接口
    接口是一种特殊的类,在很多方面都和抽象类很像。接口声明方式如下所示:
    public interface Edible {
      public abstract String howToEat();
    }
    接口声明使用的关键字是interface。使用接口的方式如下:
    public class Apple implements Edible {
      public String howToEat() {
        return "Apple:Make apple cider";
      }
    }
    继承接口使用的关键字是implements。
    说明:
    由于接口中所有的数据域都是publec final static类型,所有的方法都是public abstract类型,所以Java允许忽略这些修饰符 ,下面的接口定义是等价的:
    public interface T {
      public static final int K = 1;
      public abstract void p();
    }
    等价于:
    public interface T {
      int K = 1;
      void p();
    }
    
    ②接口内定义的常量由于都是public static类型的,因此可以使用语法“接口名.常量名”(例如,T.K)来访问。

    3、接口和抽象类
    相同点:
    ①本质上都是特殊的类;
    ②都不能被实例化。
    ③由于包含抽象方法的类都是抽象类,因此如果一个类继承了抽象类或者扩展了一个接口,它就必须实现抽象类或者接口中的所有抽象方法
    不同点:
    ①在变量和方法上的区别,如下图所示:


    Java只允许单继承类,但是允许多重继承接口
    ③接口只能扩展接口,但是类既能扩展接口又能扩展类;
    ④接口没有共同的跟,但所有的类都共享同一个跟类Object;
    接口表示事物具有的能力或行为,这些事物可以不属于同一类型,类表示同一类型的事物具有的属性
    ⑥接口名可以是形容词或者名词,但类名只能是名词。

    第十五章 图形
    主要讲了Java中的画图方法,不是我想了解的重点,暂时飘过。

    第十六章 事件驱动程序设计
    1、源对象
    能创建一个事件并触发该事件的组件成为源对象。

    2、事件类
    事件类的跟类是java.util.EventObject,一些事件类的层次结构如下图所示:


    每个源对象可能可以触发不同的事件类型,而源对象针对每个事件都维护这一个注册的监听器列表

    3、内部类
    内部类又叫嵌套类,是定义在另一个类的范围内的类,语法格式如下所示:
    public class Test {
      ...
      //Inner class
      public class InnerClassName {
        ...
      }
    }
    通常,如果内部类只是被外部类使用,那就将该类定义成内部类,内部类具有以下特点:
    ①内部类会被编译成一个名为OuterClassName&InnerClassName.class的类;
    内部类可以引用定义在它嵌套的外部类中的数据和方法
    内部类可以看成外部类一个特殊的数据成员,在使用可见性修饰符定义内部类时,遵从和类成员一样的可见性规则;
    ④内部类的对象常在其外部类中创建,但也可以从另一个类中创建一个内部类对象,如果内部类是静态的,可以使用下面的语法:
    OutClass.InnerClass innerObject = new OuterClass.InnerClass();
    如果内部类是非静态的,可以使用下面的语法:
    OutClass.InnerClass innerObject = outerObject.new InnerClass();

    内部类的作用:
    ①将从属类合并到主类中,可以减少源文件的数量,也可以使类文件便于组织;
    ②避免类命名冲突。

    4、匿名内部类
    匿名内部类是没有名字的内部类,它一步完成定义内部类和创建一个该类的实例。通常可以使用匿名内部类简化内部类监听器。
    匿名内部类的语法如下:
    new SuperClassName/InterfaceName {
      //Implement or override methods of superclass or interface
      //Other methods if necessary
    }
    匿名内部类有以下特点:
    ①匿名内部类必须总是扩展父类或者实现接口,但不能有显式的extends或者implements子句;
    ②同所有非抽象子类一样,匿名内部类必须实现父类或接口中的所有抽象方法;
    匿名内部类总是使用它的父类的无参构造方法来创建实例,如果匿名内部类实现了接口,构造方法就是Object()
    ④匿名内部类被编译成一个名为OuterClassName&n.class的类。例如,如果外部类Test有两个匿名内部类,它们就被编译为Test&1.class和Test&2.class。

    第十七章 创建图形用户界面
    主要讲述了几种控件的使用,在此略过。

    未完待续。。。

  • 相关阅读:
    【JAVA基础】强引用、弱引用、软引用、虚引用
    检测手机传感器【Sensor】
    Nginx下搭建flv视频服务器且支持视频拖动进度条播放
    盘点Web开源项目大集合【太全了!!】
    打造属于自己的Notepad++
    魔兽1.20E作弊内存地址全公开
    万能的js复制按钮
    js定时刷新网页
    解决flv格式视频在网页中播放问题
    程序员该如何学习新知识
  • 原文地址:https://www.cnblogs.com/phisy/p/3371982.html
Copyright © 2011-2022 走看看