• java 匿名内部类与包的声明访问


    一 匿名内部类

    1.匿名内部类的概念

      内部类是为了应对更为复杂的类间关系。查看源代码中会涉及到,而在日常业务中很

    难遇到,这里不做赘述。

      最常用到的内部类就是匿名内部类,它是局部内部类的一种。

    定义的匿名内部类有两个含义:

      临时定义某一指定类型的子类

      定义后即刻创建刚刚定义的这个子类的对象

    2.匿名内部类的作用与格式

    作用匿名内部类是创建某个类型子类对象的快捷方式。

    格式:

    new 父类或接口(){
        //进行方法重写
    };

    代码演示:

    //已经存在的父类:
    public abstract class Person{
        public abstract void eat();
    }
    //定义并创建该父类的子类对象,并用多态的方式赋值给父类引用变量
    Person  p = new Person(){
        public void eat() {
            System.out.println(“我吃了”);
    }
    };
    //调用eat.p.eat();
    方法

      使用匿名对象的方式,将定义子类与创建子类对象两个步骤由一个格式一次完

    成,。虽然是两个步骤,但是两个步骤是连在一起完成的。

      匿名内部类如果不定义变量引用,则也是匿名对象。代码如下:

    new Person(){
        public void eat() {
            System.out.println(“我吃了”);
    }
    }.eat();

    3.举例:

    请编写一个抽象类Phone,两个抽象方法,call()  sendMessage()
      用匿名内部类的方式写一个子类,添加一个玩游戏的功能,
       用匿名内部类对象调用玩游戏的功能.

    public abstract class Phone {
        public abstract void call();
        public abstract void sendMessage();
    }
    public class HomeWork {
        public static void main(String[] args) {
            new Phone(){
                @Override
                public void call() {
                    System.out.println("打电话");        
                }
                @Override
                public void sendMessage() {
                    System.out.println("发短信");
                }
                public void game(){
                    System.out.println("玩游戏");
                }
            }.game();
                
        }
    }

    二 包的声明与访问

    1.包的概念

      java的包,其实就是我们电脑系统中的文件夹,包里存放的是类文件。

      当类文件很多的时候,通常我们会采用多个包进行存放管理他们,这种方式称为分包管理。

      在项目中,我们将相同功能的类放到一个包中,方便管理。并且日常项目的分工也是以包

    作为边界。

      类中声明的包必须与实际class文件所在的文件夹情况相一致,即类声明在a包下,则生成的

    .class文件必须在a文件夹下,否则,程序运行时会找不到类。

    2.包的声明格式

      通常使用公司网址反写,可以有多层包,包名采用全部小写字母,多层包之间用”.”连接

    类中包的声明格式:

      package 包名.包名.包名…;

    注意:声明包的语句,必须写在程序有效代码的第一行(注释不算)

    代码演示:

    package com.oracle; //包的声明,必须在有效代码的第一行
    
    import java.util.Scanner;
    import java.util.Random;
    
    public class Demo {}

    3.包的访问

    在访问类时,为了能够找到该类,必须使用含有包名的类全名(包名.类名)。

    包名.包名….类名
    如: java.util.Scanner
         java.util.Random
        com.oracle.Demo
    带有包的类,创建对象格式:包名.类名 变量名 = new包名.类名();
         com.oracle.Demo d = new com.oracle.Demo();

    前提:包的访问与访问权限密切相关,这里以一般情况来说,即类用public修饰的情况。

     类的简化访问

      当我们要使用一个类时,这个类与当前程序在同一个包中(即同一个文件夹中),或者这个类

    java.lang包中的类时通常可以省略掉包名,直接使用该类。

      类名 变量名 = new 类名();

      Person p = new Person();

      当我们要使用的类,与当前程序不在同一个包中(即不同文件夹中),要访问的类必须用public

    修饰才可访问。

      package com.oracle02;

      public class Person {}

    4. import导包

    可以通过导包的方式使用该类,可以避免使用全类名编写(即,包类.类名)。

    导包的格式:

      import 包名.类名;

     

      当程序导入指定的包后,使用类时,就可以简化了。演示如下:

    //导入包前的方式
    //创建对象
    java.util.Random r1 = new java.util.Random();
    java.util.Random r2 = new java.util.Random();
    java.util.Scanner sc1 = new java.util.Scanner(System.in);
    java.util.Scanner sc2 = new java.util.Scanner(System.in);
    
    //导入包后的方式
    import java.util.Random;
    import java.util.Scanner;
    //创建对象
    Random r1 = new Random();
    Random r2 = new Random();
    Scanner sc1 = new Scanner(System.in);
    Scanner sc2 = new Scanner(System.in);

      import导包代码书写的位置:在声明包package后,定义所有类class前,使用导包

    import包名.包名.类名;

     

  • 相关阅读:
    Ipython qtconsole中文乱码的解决
    PowerCMD代替Windows命令提示符并设置适合变量
    Python学习前的计划
    Ubuntu安装记录
    Linux下C语言开发的一点记录
    os.path.join与中文目录
    Vim学习笔记
    SublimeText3 中Python补全插件在Linux下的问题解决
    Windows下MinGW编译vim7.4
    C语言I博客作业06
  • 原文地址:https://www.cnblogs.com/jiejava/p/13272418.html
Copyright © 2020-2023  润新知