zoukankan      html  css  js  c++  java
  • JAVA自学笔记10

    JAVA自学笔记10

    1、形式参数与返回值
    1)类名作为形式参数(基本类型、引用类型)
    作形参必须是类的对象
    2)抽象类名作形参
    需要该抽象类的子类对象,通过多态实现
    3)接口名为形参
    需要的是该接口的实现类对象
    4)类名作返回值类型
    返回的是该类的一个对象

    class StudentDemo{
    public Student getStudent(){
    return new Student()}//匿名对象,返回一个student类型
    }
    //创建该类的对象并调用该对象的getStudent()方法即可创建Student对象

    5)抽象类名作返回值类型
    返回的是抽象类的子类对象,该子类不是抽象类

    abstract class Person{
    public  abstract void study();
    }
    class PersonDemo{
    public Person getPerson(){
    return Person的子类名(需先定义);
    } 
    }

    6)接口作返回值类型
    返回的是该接口的实现类对象

    2、链式编程
    1)每次调用方法完毕后返回的是一个对象

    3、包(package)
    1)本质是文件夹
    2)目的是对类进行分类管理
    3)可按模块分也可按功能分
    4)格式:package 包名;
    多级包用.分开
    5)注意事项:package语句必须是程序的第一条可执行的代码
    package语句在一个java文件中只能有一句
    如果没有package,默认无包名
    6)编译与运行
    A.手动式:
    编写一个带包的Java文件
    通过Javac命令编译该java文件
    手动创建包名
    把第二步骤生成的class文件放到第三步骤的最底层包
    回到与包根目录在同一目录的地方,带包名运行
    B,自动式:javac编译时带上-d即可,即
    javac -d.包名.java
    系统将自动创建相关文件夹,运行方式与手动式一样
    7)不同包下类之间的访问:(导包)
    import (所在包名).包名;//用什么包就导入什么包,这种方式导入是到类的名称
    之后需创建关于该类的名称
    先后顺序:package*(只能有一个)>import(可以有多个)>class(可以有多个,建议是一个)

    4、修饰符
    1)权限修饰符
    2)class前加public
    3)状态修饰符:static/final
    4)抽象修饰符 abstract
    5)对于类,只能使用默认的或public权限修饰符,不能使用static修饰符,其余的可以,常用public
    6)对于成员变量,除abstract外所有修饰符均适用,常用private
    7)对于构造方法:不允许适用static/final/abstract,只能使用权限修饰符修饰,常用public
    8)对于成员方法:可被所有修饰符修饰,常用public
    9)除此之外的组合规则:
    成员变量:public static final//d定义静态成员变量
    成员方法:public static
    public absrtact
    public final

    5、内部类
    1)把类定义在其他类的内部,这个类就被称为内部类
    2)内部类可以直接访问外部类的成员,包括外部类私有的
    但外部类若要访问内部类的成员,则必须创建对象
    3)位置:
    成员位置类:在成员位置定义的类被称为成员内部类
    在测试类中要直接使用内部类,需经外部类允许:
    外部类名.内部类名 对象名=new 外部类构造方法名().内部构造方法名();
    Outer.Inner oi=new Outer().new Inner();
    局部位置类:在局部位置定义的类,被称为局部内部类
    4)成员内部类的常见修饰符:private 为了保证数据的安全性,修饰成员变量
    static使数据访问更加方便,修饰内部类,因为内部类可以看作是外部类的成员
    __被静态修饰的成员内部只能访问外部类的静态成员
    __内部类被静态修饰后的成员方法可以有静态的也可以有非静态
    静态内部类访问的外部类数据必须用静态修饰
    成员内部类被静态修饰后的访问方式是:
    外部类名.内部类名 对象名=new 外部类名.内部类名();
    不能再使用new 外部类名().new 内部类名();方式访问
    调用静态内部类内某一静态成员方法时也可使用
    外部类名.内部类名.方法();
    来调用

    @例题1:
    补齐程序,注意内部类与外部类间不存在继承关系

    class Outer{
    public int num=10;
    class Inner{
    public int num=20;
    }
    public void show(){
    int num=30;
    System.out.println(___);
    System.out.println(___);
    System.out.println(___);
    }}}

    使程序依次输出30、20、10,请完善以上代码
    num
    this.num
    new Outer().num//不是讲台变量,只能通过创建匿名对象来访问
    或Outer.this.num

    5)局部内部类(定义在成员方法内)来访问局部变量
    可以直接访问外部类的成员
    在局部位置,可以创建内部类对象,通过对象调用内部类的方法,来使用局部内部类功能

    @例题2:局部内部类访问局部变量的注意事项
    局部内部类访问的局部变量必须用final修饰
    因为局部变量会随着方法的调用完毕而消失,这个时候,局部对象并没有立刻从堆内存中消失,还要使用那个变量。为了让数据还能继续被使用,就用final修饰,这样在堆内存里面存储的其实是一个常量值。通过反编译工具可以看一下

    6)匿名内部类
    ①是内部类的简化方法
    前提是存在一个类或者接口,可以是具体类也可以是抽象类
    格式: new 类名或者接口名(){重写方法};
    本质:是一个继承了该类或者实现了接口的子类匿名对象
    ②匿名内部类方法的调用
    例子
    直接在匿名对象后调用(要在构造完匿名对象后加分号),但只能调一次
    对需要调用多个方法时,需定义类或接口的对象,通过该对象来调用(多态的思想)
    ③在开发中的应用:作为实现类成员方法的参数,在参数列表内直接定义匿名内部类,套用①中格式即可

    @例题3:匿名内部类面试题:
    按照要求,补齐代码
    interface Inter { void show(); }
    class Outer { //补齐代码 }
    class OuterDemo {
    public static void main(String[] args) {
    Outer.method().show();
    // Outer.method()可以得知method是outer 中的一个静态方法,返回的是一个对象。又由于接口Inter中有一个show()方法,所以我认为method()方法的返回值类型
    }
    }
    要求在控制台输出”HelloWorld”

  • 相关阅读:
    [置顶] windows player,wzplayerV2 for windows
    wzplayer 近期将会支持BlackBerry和WinPhone8
    wzplayerEx for android(真正硬解接口,支持加密的 player)
    ffmpeg for ios 交叉编译 (支持i686 armv7 armv7s) 包含lame支持
    ffmpeg for ios 交叉编译 (支持i686 armv7 armv7s) 包含lame支持
    编译cegcc 0.59.1
    wzplayer 近期将会支持BlackBerry和WinPhone8
    wzplayerEx for android(真正硬解接口,支持加密的 player)
    windows player,wzplayerV2 for windows(20140416)更新
    编译cegcc 0.59.1
  • 原文地址:https://www.cnblogs.com/Tanqurey/p/10485319.html
Copyright © 2011-2022 走看看