关闭

JAVA基础课总结九

标签: 内部类
121人阅读 评论(0) 收藏 举报


本节重点介绍了内部类,是本人根据学习资料总结所得!


一、包                                                                       

A包其实就是文件夹。用于将字节码(.class)进行分类存放 

B格式:

package 包名1.包名2...;

      多级包用.分开即可

C定义包的注意事项

a:package语句必须是程序的第一条可执行的代码

b:package语句在一个java文件中只能有一个

c:如果没有package,默认表示无包名

 

 

 

    D带包的编译和运行

A:手动建包

1:javac命令编译生成class文件。

2:手动创建包(文件夹)

3:class文件扔到文件夹中。

4:java命令执行

类一定要用全路径名称。

带着包使用。

java com.PackageDemo

E自动建包

编译的时候,让它自动建包。

 

javac -d . PackageDemo.java

 

-d 后面表示在当前目录建立包。

二、导包

A编译报错解决方案:

问题1:找不到Demo类。

解决方案:用全路径名称。

 

问题2:程序包cn.itcast不存在。

解决方案:先编译Demo类,在编译Test类。

 

问题3Demo类无法被访问到。

解决方案:对类用public进行修饰。

B一般来说,用一个类,需要用该类的全路径名称。

   如果多个地方使用,就比较麻烦,所以java提供了导包操作。

C格式:

import 包名1.包名2...类名;

     虽然可以最后写*,但是不建议。

D packageimportclass的顺序

package -- import -- class

 

三、四种权限修饰符

本类同包(无关类或者子类)不同包(子类)不同包(无关类)

privateY

默认Y       Y

protectedY      Y    Y

publicY       Y    Y           Y

 

简单概括:

private是给本类使用的

默认修饰符 是给同一个包下所有的类使用的

protected 是给子类使用的 不管子类在不在同一个包,也是给同一个包下所有的类使用的

public 是给任何一个所有人使用的

推荐:

成员变量private

构造方法public

成员方法public

 

一、不同修饰符修饰的内容

 

修饰符:

权限修饰符:private,默认的,protectedpublic

状态修饰符:staticfinal

    抽象修饰符:abstract

    

            类 成员变量  成员方法   构造方法

private    Y     Y       Y

默认Y    Y     Y        Y

protected    Y     Y       Y

publicY    Y         Y       Y

abstract    Y            Y

static    Y      Y

finalY    Y      Y

 

注意,常见规则如下:

以后,所有的类都用public修饰。并且,在一个java文件中,只写一个类。

 

以后,所有的成员变量用private修饰。

 

以后,所有的成员方法用public修饰。

如果是抽象类或者接口:

public abstract + ...

 

以后,所有的构造方法用public修饰。

如果类是工具类或者单例类:

构造用private修饰

 

五、内部类

A把类定义在一个类的内部。

B访问特点:

a:内部类可以直接访问外部类成员,包括私有

注:内部类之所以能访问外部类的成员,是因为它能获取到外部类的引用,如:Outer.this.调用外部类方法

b:外部类要想访问内部类成员,必须创建对象。

 

    C内部类分类:

a:成员位置

          1、内部类修饰符

private 安全隐藏内部类  提供公共的访问方法 

      注:私有成员内部类需在外部类里创建内部类对象提供公共访问方法

          

static  方便调用

           2、如果成员内部类里有静态内容,则成员内部类必须定义为静态

         3、外部访问非静态成员内部类  

             外部类名.内部类名 变量 外部类对象.内部类对象;

  4、外部访问静态成员内部类   

 外部类名.内部类名 变量 外部类.内部类();

 

       b:局部位置

1、定义在方法中。

         2、局部内部类只在局部调用

          3、可以访问外部类成员变量,需要在局部内部类内创建方法调用

  3、局部内部类访问局部变量必须用final修饰

      4、局部内部类在访问他所在方法中的局部变量必须用final修饰,为什么?

因为当调用这个方法时,局部变量如果没有用final修饰,他的生命周期和方法的生命周期是一样的,当方法弹栈,这个局部变量也会消失,那么如果局部内部类对象还没有马上消失想用这个局部变量,就没有了,如果用final修饰会在类加载的时候进入常量池,即使方法弹栈,常量池的常量还在,也可以继续使用

 

 

D内部类字节码文件命名规则

成员内部类:外部类$内部类

有多个成员内部类的 会多个  外部类$1

局部内部类:外部类$1内部类

六、匿名内部类

A:是定义在局部位置的没有名字的内部类。

B:前提

存在一个类,抽象类或者接口,有方法重写

C:格式

new 类或者接口名()

{

重写方法;

}

 

本质理解:其实这是一个继承类或者实现接口的匿名的子类对象。

D:使用

           1、可以直接调方法

           2、可以赋值给父类或者接口的引用

3、当你看到方法的形式参数是接口或者抽象类的时候。

    用匿名内部类改进。

 

          注:匿名内部类不能向下转型,子类特有的方法调用不了

 

之前内容的总结:

A基本数据当形参,给的是值

  引用数据类型当形参,给的是地址值,指向的是该类的对象

B匿名对象调用方法:适合一次调用,调用多次产生多个对象

  匿名对象调属性:可以调用,但是没意义,调用之后变成了垃圾

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1421次
    • 积分:141
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档
    最新评论