1:形式参数和返回值的问题(理解)

(1)形式参数:

类名:需要该类的对象

抽象类名:需要该类的子类对象

接口名:需要该接口的实现类对象

(2)返回值类型:

类名:返回的是该类的对象

抽象类名:返回的是该类的子类对象

接口名:返回的是该接口的实现类的对象

(3)链式编程

对象.方法1().方法2().......方法n();

这种用法:其实在方法1()调用完毕后,应该一个对象;

方法2()调用完毕后,应该返回一个对象。

方法n()调用完毕后,可能是对象,也可以不是对象。

2:包(理解)

(1)其实就是文件夹

(2)作用:

A:区分同名的类

B:对类进行分类管理

a:按照功能分

b:按照模块分

(3)包的定义(掌握)

package 包名;

多级包用.分开。

(4)注意事项:(掌握)

A:package语句必须在文件中的第一条有效语句

B:在一个java文件中,只能有一个package

C:如果没有package,默认就是无包名

(5)带包的编译和运行

A:手动式

B:自动式(掌握)

javac -d . HelloWorld.java

3:导包(掌握)

(1)我们多次使用一个带包的类,非常的麻烦,这个时候,Java就提供了一个关键字import。

(2)格式:

import 包名...类名;

另一种:

import 包名...*;(不建议)

(3)package,import,class的顺序

package > import > class

4:权限修饰符(掌握)

(1)权限修饰符

本类     同一个包下      不同包下的子类       不同包下的无关类

private                 Y

默认               Y                 Y

protected       Y                      Y                         Y

public                       Y                     Y                          Y                                Y

(2)这四种权限修饰符在任意时刻只能出现一种。

public class Demo {}

5:常见的修饰符(理解)

(1)分类:

权限修饰符:private,默认,protected,public

状态修饰符:static,final

抽象修饰符:abstract

(2)常见的类及其组成的修饰

类:

默认,public,final,abstract

常用的:public

成员变量:

private,默认,protected,public,static,final

常用的:private

构造方法:

private,默认,protected,public

常用的:public

成员方法:

private,默认,protected,public,static,final,abstract

常用的:public

(3)另外比较常见的:

public static final int X = 10;

public static void show() {}

public final void show() {}

public abstract void show();

6:内部类(理解)

(1)把类定义在另一个类的内部,该类就被称为内部类。

举例:把类B定义在类A中,类B就被称为内部类。

(2)内部类的访问规则

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

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

(3)内部类的分类

A:成员内部类

B:局部内部类

(4)成员内部类

A:private 为了数据的安全性

B:static 为了访问的方便性

成员内部类不是静态的:

外部类名.内部类名 对象名 = new 外部类名.new 内部类名();

成员内部类是静态的:

外部类名.内部类名 对象名 = new 外部类名.内部类名();

(5)成员内部类的面试题(填空)

30,20,10

class Outer {

public int num = 10;

class Inner {

public int num = 20;

public viod show() {

int num  = 30;

System.out.println(num);

System.out.println(this.num);

System.out.println(Outer.this.num);

}

}

}

(6)局部内部类

A:局部内部类访问局部变量必须加final修饰。

B:为什么呢?

因为局部变量使用完毕就消失,而堆内存的数据并不会立即消失。

所以,堆内存还是用该变量,而改变量已经没有了。

为了让该值还存在,就加final修饰。

通过反编译工具我们看到了,加入final后,堆内存直接存储的是值,而不是变量名。

(7)匿名内部类(掌握)

A:是局部内部类的简化形式

B:前提

存在一个类或者接口

C:格式:

new 类名或者接口名() {

重写方法;

}

D:本质:

其实是继承该类或者实现接口的子类匿名对象

(8)匿名内部类在开发中的使用

我们在开发的时候,会看到抽象类,或者接口作为参数。

而这个时候,我们知道实际需要的是一个子类对象。

如果该方法仅仅调用一次,我们就可以使用匿名内部类的格式简化。

interface Person {

public abstract void study();

}

class PersonDemo {

public void method(Person p) {

p.study();

}

}

class PersonTest {

public static void main(String[] args) {

PersonDemo pd = new PersonDemo();

pd.method(new Person() {

public void study() {

System.out.println("好好学习,天天向上");

}

});

}

}

(9)匿名内部类的面试题(补齐代码)

interface Inter {

void show();

}

class Outer {

//补齐代码

public static Inter method() {

return new Inter() {

public void show() {

System.out.println("HelloWorld");

}

};

}

}

class OuterDemo {

public static void main(String[] args) {

Outer.method().show(); //"HelloWorld"

}

}

匿名内部类只能使用一次,调用之后会消失,适合手机端

转载于:https://www.cnblogs.com/csslcww/p/9162620.html

day10-包的定义和内部类相关推荐

  1. fianl属性 java_java基础-类的高级属性(包、final、内部类)

    女神镇楼 类除了具有普通的特性之外,还有一些高级特性,比如包.内部类等.包在整个管理过程中起到非常积极的作用,使用包可以有效的管理繁杂的类文件,解决类重名的问题,当在类中配合包与权限修饰符使用时,可以 ...

  2. python导入包相当于什么_Python包及其定义和引用详解

    对于一个需要实际应用的模块而言,往往会具有很多程序单元,包括变量.函数和类等,如果将整个模块的所有内容都定义在同一个 Python 源文件中,这个文件将会变得非常庞大,显然并不利于模块化开发. 什么是 ...

  3. (35)System Verilog引用包中定义的类(成功)

    (35)System Verilog引用包中定义的类(成功) 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog引用包中定义的类(成功) ...

  4. (34)System Verilog引用包中定义的类(失败)

    (34)System Verilog引用包中定义的类(失败) 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog引用包中定义的类(失败) ...

  5. oracle 包和包体禁用,Oracle包和包体以及与非包体定义函数、过程的区别

    Oracle包和包体以及与非包体定义函数.过程的区别. 1.Oracle中的包和包体 Oracle中的包和包体与java中的接口和类才关系特别类似,我们就根据对比学习一下包和包体吧! 2.oracle ...

  6. java类和对象之包的定义

    文章目录 包的基本概述 包的作用 包的定义 导包 例题一 例题二 包的基本概述 在编写 Java 程序时,随着程序架构越来越大,类的个数也越来越多,这时就会发现管理程序中维护类名称也是一件很麻烦的事, ...

  7. Java——包的定义及使用

    目录 1.包的定义 2.包的导入 3.系统常见包 4.总结 以下讲解的内容,概念清除即可,实际上现在使用的IDE开发工具,很多操作不需要我们手动去完成了. 1.包的定义 任何操作系统中,都有一个统一的 ...

  8. java 包的定义与使用

    包的定义与使用 在开发过程中,会定义很多类,为了避免相同类名称出现而发生覆盖的情况,把所有java程序保存在各自的目录里面,而该目录就是包.包的本质实际上就是一个文件夹. 一.包的定义 java程序是 ...

  9. java中的包如何定义_java中包的定义与使用

    包的本质就属于一个文件夹,用来解决类名称重名的问题. 包的定义:在源文件首行使用package包名称: package www.myfile.java; public class Test{ publ ...

最新文章

  1. 日服巫术online过驱动保护分析(纯工具)(工具+自写驱动)
  2. 饥荒海难创建显示专用服务器,饥荒创建世界时一直显示启动服务器 | 手游网游页游攻略大全...
  3. uva 10515——Powers Et Al.
  4. poj 2723 2-SAT问题
  5. 美国OCC代理署长Brian Brooks将于今日离任,由首席运营官接任
  6. Flipping elements with WPF
  7. 自助出版风靡美国的7个理由(转载)
  8. zzulioj题库题解(持续更新中.......)
  9. 【seeprettyface.com】开源源码:Video-Auto-Wipe
  10. 谷歌中国工程研究院原副院长王劲加盟百度
  11. 好用的三维绘图软件CREO学习标注尺寸
  12. ORB-SLAM3安装遇到的问题及解决
  13. 电子计算机进行会计核算 其会计,1. 使用电子计算机进行会计核算,其软件与其生成会计 ….doc...
  14. 用魔法打败魔法!这件毛衣让摄像头看不到你;两款酷炫的AI写作软件;基于深度学习扩散模型的蛋白质设计;Codon开源Python编译器;基于AI生成连贯的剧本 | ShowMeAI资讯日报
  15. 输出的字符串中有空格并且无法替换B e a r e r N D c y Z T g 4 N z A t N 2 N h Z C 0 0 Y 2 E 4 L T g x M W E t O D Y
  16. vue2中使用axios,以及axios拦截器的配置
  17. layui 数据表格的搜索分页功能的实现
  18. _parameter;@param,refid是什么意思?
  19. 渗透测试——bluecms安装及seay代码审计
  20. 综合实践空调温度控制c语言,空调温度控制系统毕业论文.doc

热门文章

  1. 使用Maven把项目打包成可执行jar在Idea里
  2. libevent在windows平台下通过vs进行编译
  3. 修改一个CGRect的值
  4. silverlight 加载大图片进度提示
  5. android 栈溢出 检查,安卓源码编译完成后打包时出现栈溢出,求大家解决
  6. ef设置非自增长id_今日学习必备:分布式系统全局唯一ID你懂吗?
  7. (56)UART外设驱动协议(一)(第12天)
  8. Vivado时序报告名词解释
  9. python dlib人脸检测_使用Python+OpenCV+Dlib实现人脸检测与人脸特征关键点识别
  10. C++ 深拷贝和浅拷贝std::move移动构造函数,移动赋值函数