形式参数和返回值的问题深入研究:

形式参数:

形式参数分为基本类型和引用类型。

引用类型:

:需要的是该类的对象,也可以用匿名对象来作为参数和调用的主体。

抽象类子类实现对象。创建该抽象类的具体子类,然后用多态定义,把定义的对象扔到形参去。

接口实例化对象。和抽象类一样,用具体子类实现,然后用多态定义【接口名 对象名 = new 具体子类名】,然后用对象名去实现形参。

返回值:

返回值分为基本类型和引用类型。

引用类型:

:返回的是该类的一个对象

抽象类:也是返回一个抽象类的子类对象。用多态的方法,甚至直接返回new Student.

接口:返回的是一个实例化对象

【这一块很烦而且说不清楚,再用到的时候找示例代码看一下就明白了】

链式编程:

直接用方法的返回值(类的对象)调用该类的方法。【对象调方法,再调方法】

链式编程的特点:每次调用完毕方法后,返回的是一个对象。

包:

包的概述:其实就是文件夹。

包的作用:把相同的类名区分开/对类进行分类管理。

数据库常见的四大功能:增加/修改/删除/查询

分包的标准:按照功能分/按照模块分

包的定义及注意事项:

定义包的格式:

package 包名;

多级包用.分开即可

注意事项:1.package语句必须是程序第一条可执行代码 2.package语句在一个java文件中只能有一个 3.如果没有package,默认没有包名。

带包文件的编译和运行:

1.    手动式:编写一个带包的java文件;通过javac命令编译该java文件;手动创建包名;把b步骤的class文件放到c步骤的最底层的包中;【包名和文件目录名必须是对应的】回到和包的根目录在同一目录的地方,然后运行。运行时,也要带包运行。

自动式:javac编译的时候带上-d即可。这个时候,会

点表示当前路径下创建包,也就是包的根目录是当前目录。编译会自动创建对应目录和class文件,运行时也要带包运行。

不同包下的类之间的编译和访问:

导包:

格式:import 包名,也可以写“*“表示通配符,但是不建议这么做,因为匹配起来很麻烦。

同时注意,所有的包名,根目录都在当前目录下。

【面试题:package,import,class有没有顺序关系?必须有,package>import>class,其中package只能有一个,import可以有多个,class有多个不报错,但是建议有一个】

面向对象各种权限修饰符:

类及其组成所使用的常见修饰符:

修饰符的分类

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

状态修饰符:ststic,final

抽象修饰符:abstract

那么,哪些对象可以使用哪些修饰符呢?

类:

可以使用默认修饰符、public修饰符,不能使用private,protected(限制了别人就没法访问了)

可以使用final(不能被继承),不能使用static(类都静态了你还怎么玩)

可以使用抽象修饰符

其中,用得最多的就是用public修饰。

成员变量:

权限修饰符四个都可以,发挥不同的功能。

状态修饰符两个都可以,分别表示静态变量和常量。

抽象修饰符不可以,因为没有抽象的变量。

用得最多的是private(封装)

构造方法:

权限修饰符四个都可以,构造方法不能被访问时,表示不可以被创造对象。

状态修饰符两个都不可以,因为没有意思。

抽象修饰符也不可以

由此可见,构造方法只能使用权限修饰符修饰。用得最多的还是public。

成员方法:

权限修饰符四个都可以,显然。

状态修饰符静态可以,显然main方法就是静态的,final也可以,final方法不能被重写。

抽象修饰符也可以,就是没有方法体的抽象方法。

除此以外,

成员变量:public static final

成员方法:public static

public abstract

public final

内部类:把类定义在其他类的内部,这个类就被称为内部类。

举例:在类A中定义了一个类B,类B就是内部类。

内部类是如何访问的呢?

1.    内部类可以直接访问外部类的成员包括私有

2.    外部类要访问内部类的成员,必须创造对象。

内部类位置:

和成员方法、成员变量平级,在成员位置定义的类,被称为成员内部类。

和局部变量平级,在局部位置(方法里面)定义的类,被称为局部内部类。

下面我们先看成员内部类。

如何直接访问成员内部类呢?要访问内部的成员,就要创造外部的变量。

格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象

成员内部类的常见修饰符:

【提一点,成员内部类可以用private修饰,内部类一般都是不让外界直接访问的,需要用一个方法来访问,方法可以加校验条件】

在main 方法中,通过对Body创建对象,调用method方法来实现心脏搭桥。

所以,第一个常用的修饰符:private

【内部类也可以用静态修饰,因为内部类可以看作是外部类的成员。静态的东西通常不是private的,因为静态的东西就是为了让别人通过类名访问。】

静态只能访问静态,内部类也不例外。静态内部类访问的外部类数据必须用静态修饰。

成员内部类被静态修饰后,不能被外部的对象访问,访问方法是这样的:

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

最终new的这个东西,是被外部类限定的静态内部类。

类中,静态类的静态方法,可以直接通过类名调用。【InnerClassDemo4中,show2的另一种调用方式】

所以,为了方便访问数据,也经常使用static。

 

注意事项:内部类和外部类没有继承关系。内部类如果想要访问外部的变量,需要创建对象,或巧用this关键字。

(假装这里有一个指向上边的箭头)通过外部类名限定this对象。

局部内部类:

可以直接访问外部类的成员。

在局部位置,可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能。

【面试题】局部内部类访问局部变量的注意事项:从内部类中访问本地变量,需要被声明为最终类型。

为什么?

因为局部变量会随着方法的调用完毕而消失。这个时候,局部对象并没有立马从堆内存中消失,还要使用那个局部变量。【堆内存不是立即回收,但是局部变量是离开作用域就没有了】那么局部变量加了final之后,发生了什么事?编译器把num2直接当成常量了,看见final变量就等于看见了常量(比如20),你消失了,我在内存中存储的是数据20,20会消失吗?不会。所以,我还是有数据在使用。

【为啥没有用静态修饰?局部变量不能用静态,因为静态变量是随着类的加载而加载的,方法不是】

匿名内部类:就是内部类的简化写法。

前提:存在一个类或者接口,这里的类可以是具体类也可以是抽象类。

格式:new 类名或者接口名(){重写方法;}

本质是什么呢?

上面这个格式代表的是什么呢?虽然它叫做内部类,但是它本质上并不是一个类,而是一个对象。谁的对象呢?

它是一个对象,是一个继承了该类或者实现了该接口的子类匿名对象。

一步到位实现了两步:声明子类/创建对象。

如何调用匿名内部类的方法?

对象.方法,没毛病。(注意后面的分号)

但是如果有两个方法呢?【注意返回值为空所以不能链式编程】

那如果有n个方法呢?

这个方法肯定不是长久之计。麻烦得有麻烦的解决方案。

被选中的部分是接口的子类的对象,没有选中的部分是多态的表示(虽然看着不像多态)。这样,通过调用i就可以调用对象(相当于不再是匿名的了)

匿名内部类在开发中的应用:

用于直接实现形式参数为接口的函数

注意最外面的小括号的位置,小括号写在外面,表示调用的动作,如果写成这样

就会报错。另外,注意如果需要使用多次,那就好好创建子类还是不要用这种方法了。因为每new一次就是一个新的对象。

传智播客-刘意-java深入浅出精华版学习笔记Day10相关推荐

  1. 传智播客-刘意-java深入浅出精华版学习笔记Day08

    工具中使用静态: 在同一个类中,main方法只能访问静态方法. [错误:无法从静态上下文中引用非静态,这样的错误一定是因为在main方法中调用了非静态方法.] 对非静态方法来说,只能通过对象(也就是其 ...

  2. 传智播客-刘意-java深入浅出精华版学习笔记Day05

    [视频的前半段讲的是方法.因为方法和函数几乎是一样的,所以直接跳过去了,从数组开始看,唯一有一点需要注意的,就是现在我们暂时都把方法定义为public static型的] 定义格式: 数组的初始化: ...

  3. 传智播客 刘意_2015年Java基础视频-深入浅出精华版 笔记(2015年10月25日23:28:50)

    day01 win 7系统打开DOS有趣方法:按住shift+右键,单击"在此处打开命令窗口"(注意:在此处可以是任何的文件夹,不一定是桌面) 用DOS删除的文件不可以在回收站恢复 ...

  4. 2010春节后传智播客报班JAVA,想找学习的人一起团报QQ940834693

    折腾这么久,熬了几个通宵,比较北京的几个有名的java培训机构,看他们的招生简章,听他们的网络课程,最终选择了传智播客.现在听说传智播客团报便宜.所以寻找过了春节想去传智播客学java的同道.qq:9 ...

  5. 传智播客 刘意_2015年Java基础视频-深入浅出精华版 笔记(day01~day10)(2015年11月17日20:51:59)

    本笔记是个人笔记+摘录笔记相结合,非完全原创 day01 win 7系统打开DOS有趣方法:按住shift+右键,单击"在此处打开命令窗口"(注意:在此处可以是任何的文件夹,不一定 ...

  6. 2015年传智播客java_2015年Java 8强势开始

    2015年传智播客java JDK 8从2015年开始,其博客文章和文章的受欢迎程度将激增. 这与本月将 Java 自动升级到JDK 8恰好吻合. 在这篇文章中,我列出并简要描述了2015年已经发布的 ...

  7. 传智播客 php培训 mysql 刘道成 word 文档,传智播客 刘道成PHP视频教程 mysql 数据库视频教程...

    记得14年的时候有整理过这套课程,但是课程太多 今天却翻不到,所以在这里发一下吧. 4 ]0 {2 I. c- Z! u0 h6 J5 x传智播客出品 讲师 刘道成 Mysql 视频教程 mysql和 ...

  8. 传z播客 刘意_2015年Java基础视频笔记(day18~day20(2016年3月20日14:36:05)

    day18 1.Map引入 Map是区分于Collection的另外一个"老大" 作为学生来说,是根据学号来区分不同的学生的,那么假设我现在已经知道了学生的学号,我要根据学号去获取 ...

  9. 传z播客 刘意_2015年Java基础视频笔记(day18~day20)(2016年3月20日14:33:31)

    day18 1.Map引入 Map是区分于Collection的另外一个"老大" 作为学生来说,是根据学号来区分不同的学生的,那么假设我现在已经知道了学生的学号,我要根据学号去获取 ...

  10. 传智播客 - java 就业面试题大全

      从享受生活的角度上来说:"程序员并不是一种最好的职业,我认为两种人可以做程序员,第一,你不做程序员,你就没有什么工作可做,或者说是即使有可以做的工作但是你非常不愿意去做:第二,你非常痴迷 ...

最新文章

  1. python编辑器,作为初学者该如何抉择?
  2. 50年前,Hello World发明者第一次提交的Go代码长这样……
  3. c语言无符号中符号什么意思,C语言中无符号与有符号及相加问题
  4. 无线策略服务器,无线网络中的分布式资源管理策略研究
  5. python矩阵乘法分治_分治法实现矩阵乘法
  6. 东北林大计算机考研难吗,北京林业大学考研难吗?一般要什么水平才可以进入?...
  7. 关于Python局部变量和全局变量必须知道的几句话
  8. 让医生能更好诊断患者风险 英国剑桥大学开发心脏病预测AI
  9. CentOs上docker安装nginx、tomcat、redis
  10. raw socket的例子
  11. 共谋发展:软件孵化器与软件开发云
  12. 文本特征提取方法深度研究
  13. 计算各个城市实际地区生产总值(附各个城市实际GDP)
  14. python----根据共振峰频率绘制二阶谐振曲线
  15. php阴阳万年历转换的接口,阴历阳历转换(阴阳转换万年历查询表)
  16. PhD Debate-11 预告 | 回顾与展望神经网络的后门攻击与防御
  17. 手把手教你,搭建内网穿透服务
  18. Micropython——关于通信I2C协议的应用和原理讲解
  19. 人脸识别几个解决方案分析与测评
  20. 京东2020校招笔试题-算法工程师

热门文章

  1. 【保研记录】预推免面试可能遇到的问题(偏计算机)
  2. 【2020年CSDN技术人内推活动开始啦】多家名企员工在线内推,快人一步拿Offer
  3. html5+JS调用摄像头示例
  4. 微信小程序-制作购物车
  5. Keil系列教程(汇总)
  6. 02129 信息资源建设《信息资源管理(第2版) 电子工业出版社 肖明著》考点整理
  7. PostgreSQL导入sql文件的方法
  8. MCP2515在8M晶振控制器下配置1M波特率的配置
  9. tftp命令linux,tftp命令使用详解
  10. 计算机的管理员关机命令,电脑定时自动关机命令怎么使用?