zoukankan      html  css  js  c++  java
  • Day06:抽象类、接口和内部类(上)

    JVAV中的常量

    什么是常量?

    常量就是不会变化的数值

    为什么需要常量?

    方便使用(调用)不会变化的数值

    特性

    不能修改

    所有对象共享

    常量一定是成员

    定义

    public static final 类型 常量名=数值;
    public static final double PI=3.1415926;

     常量使用类名调用,不能被修改

    命名规范

    所有字母都大写

    多个单词用_分隔

    赋值

    声明的同时赋值

    语法也允许在静态块中赋值

    如果常量在声明的同时赋值

    代码中调用这个常量的位置

    编译时会替换这个常量的值

    无需加载这个类,从而提高运行效率

    抽象类

    什么是抽象类?

    不存在对象的类型就是抽象类

    特征

    抽象不能被实例化

    抽象类中能编写抽象方法

    抽象类中的抽象方法不限

    编写抽象类

    使用abstract(抽象)修饰类即可

    抽象方法

    什么是抽象方法?

    不能编写具体实现的方法

    特征

    抽象方法不能写方法体

    抽象方法必须在子类中被重写,除非子类也是抽象类

    抽象方法必须在抽象类中

    定义

    在方法的返回值类型前,编写abstract

    编写后这个方法的参数列表后只能跟“;”

    好处

    抽象类不能被实例化

    只能作为父类,提供一个数据结构,减化编程

    子类中必须重写父类的抽象方法,约束了子类的型为,更加自然的使用向上造型和方法重写

     

    final关键字和abstract关键子字矛盾不能同时修饰一个类或方法

     内部类

    什么是内部类?

    一个类的内部定义的另一个类我们将外部的类称为outer,将内部的类称为inner。

    种类

    在java中有很多不同形式的内部类主要

    成员内部类和匿名内部类

    成员匿名类

    什么是匿名内部类?

    在类中的成员位置声明(定义)的类结构。

    特性

    内部类可以访问外部类的私有成员;

    当内部类和外部类有同名成员时内部可以使用

    外部类名.this.成员

    访问;

    通常情况下内部类只会在外部类中使用,实例化内部类对象可以访问内部的私有成员;

    如果非要在其他类中实例化内部类对象的话;

    Outer.Inner inn=new Outer().new Inner();

    匿名内部类

    什么是匿名内部类?

    在方法中通过一个类或实现一个接口类创建的没有名称的内部类。

    特性

    可以使用外部类的私有成员;

    内部类和外部类的成员同名时,使用

    外部类名.this.成员

    来指定外部类的成员;

     匿名内部类创建的对象,相当于这个类的子类对象在方法中使用;

    如果这个类的对象只在某一个方法中使用一次的话,可以使用匿名内部类;

    匿名内部类可以使用其所在方法的局部变量,但是要将其视为被final修饰的JDK1.6之前,

    匿名内部类中使用的方法中的局部变量必须使用final修饰

    计时器

    什么是计时器?

    定期或周期性的调用一个方法的特殊类

     实现

    每隔2秒输出

        public static void main(String[] args) {
            System.out.println("start");
            Timer ti=new Timer();//实例化Timer对象(java.util)
            TimerTask task=new TimerTask() {
                int i=1;
                @Override
                public void run() {
                    //重写run方法
    
                    System.out.println("我是猪");//输出语句
                    i++;//每输出一次语句加1
                    if(i==5){//输出5次
                        cancel();//到达取消操作
                    }
                }
            };
            //单位毫秒
            ti.schedule(task,2000,2000);//在方法中使用Timer对象调用schedule方法
            //定义间隔时间
        }
  • 相关阅读:
    WebSocket
    Spring Web MVC
    对象关系映射(ORM)数据访问
    使用JDBC进行数据访问
    【Mysql】【基础综合题解】大一下学期数据库综合训练题解
    【Mysql】【解决问题】[Err] 1055
    【JavaSE】【IO流】复制单级或多级文件夹
    C#使用FFmpeg的总结
    C#一个IM系统简单总结
    重新开启博客
  • 原文地址:https://www.cnblogs.com/wsnb8/p/11307776.html
Copyright © 2011-2022 走看看