• 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”

  • 相关阅读:
    java.net.DatagramPacket/java.net.DatagramSocket-UDP Socket编程
    新浪微博客户端(9)-实现版本新特性的ViewPager
    新浪微博客户端(8)-添加按钮到TabBar
    iOS-Auto property synthesis will not synthesize property 'delegate'; it will be implemented by its super
    新浪微博客户端(7)-通过转换坐标系来调整首页下拉菜单的位置
    新浪微博客户端(6)-创建首页下拉菜单
    TortoiseGit-创建分支、合并分支
    BZOJ2683: 简单题(cdq分治 树状数组)
    BZOJ3262: 陌上花开(cdq分治)
    BZOJ1901: Zju2112 Dynamic Rankings(整体二分 树状数组)
  • 原文地址:https://www.cnblogs.com/Tanqurey/p/10485319.html
Copyright © 2020-2023  润新知