面向对象ooDay7
.精华笔记:
1)成员内部类: 应用率不高
1.1)类中套类,外面的称为外部类,里面的称为内部类
1.2)内部类通常只服务于外部类,对外不具备可见性
1.3)内部类对象通常在外部类中创建
1.4)内部类中可以直接访问外部类的成员(包括私有的)
内部类中有一个隐式的引用,指向了创建它的外部类对象
---外部类名.this---------------要记住(传奇老师那用)
2)匿名内部类:----------大大简化代码的操作
2.1)若想创建一个类(派生类)的对象,并且对象只被创建一次,
此时可以设计为匿名内部类
2.2)在匿名内部类中不能修饰外面局部变量的值,
因为该变量在此处会默认为final的----------记住它(传奇才师那用)
2.3)问:内部类有独立的.class吗?
答:有
一.笔记:
1)成员内部类: 应用率不高
1.1)类中套类,外面的称为外部类,里面的称为内部类
1.2)内部类通常只服务于外部类,对外不具备可见性
1.3)内部类对象通常在外部类中创建
1.4)内部类中可以直接访问外部类的成员(包括私有的)
内部类中有一个隐式的引用,指向了创建它的外部类对象
---外部类名.this---------------要记住(传奇老师那用)
```java
public class InnerClassDemo {
public static void main(String[] args) {
Mama m = new Mama();
//Baby b = new Baby(); //编译错误,内部类对外不具备可见性
}
}
class Mama{ //外部类
private String name;
void create(){
Baby b = new Baby();
}
class Baby{ //内部类
void showName(){
System.out.println(name); //简便写法
System.out.println(Mama.this.name); //完整写法
//System.out.println(this.name); //编译错误,this指代当前Baby对象
}
}
}
```
2)匿名内部类:----------大大简化代码的操作
2.1)若想创建一个类(派生类)的对象,并且对象只被创建一次,
此时可以设计为匿名内部类
2.2)在匿名内部类中不能修饰外面局部变量的值,
因为该变量在此处会默认为final的----------记住它(传奇才师那用)
2.3)问:内部类有独立的.class吗?
答:有
```java
public class NstInnerClassDemo {
public static void main(String[] args) {
//1)系统自动创建了Aoo的一个派生类,但是没有名字
//2)为该派生类创建了一个对象,名为o1
// ---new Aoo(){}是在创建Aoo的派生类的对象
//3)大括号中的为派生类的类体
Aoo o1 = new Aoo(){
};
//1)系统自动创建了Aoo的一个派生类,但是没有名字
//2)为该派生类创建了一个对象,名为o2
//3)大括号中的为派生类的类体
Aoo o2 = new Aoo(){
};
//1)系统自动创建了Boo的一个派生类,但是没有名字
//2)为该派生类创建了一个对象,名为o3
//3)大括号中的为派生类的类体
Boo o3 = new Boo(){
void show(){
System.out.println("showshow");
}
};
o3.show();
int num = 5;
num = 55;
Boo o4 = new Boo(){
void show(){
System.out.println("showshow");
//num = 66; //编译错误,匿名内部类中不能修改外面局部变量的值,
//因为在此处该变量会默认为final的
}
};
}
}
abstract class Boo{
abstract void show();
}
abstract class Aoo{
}
```
二.补充:
1.隐式的引用:
1)this:指代当前对象
2)super:指代当前对象的超类对象
3)外部类名.this:指代当前对象的外部类对象
2.做功能的套路:
1)先写行为/方法:
1.1)若为派生类所特有的行为,则将方法设计在特定的类中
1.2)若为所有派生类所共有的行为,则将方法设计在超类中
2)窗口调用:
2.1)若为定时(自动)发生的,则在定时器中调用
2.2)若为事件触发的,则在侦听器中调用-----------明天第1节课讲
3.调用方法的注意事项:
1)若方法是有返回值的,则必须声明对应类型的变量来接收
2)调用时:
2.1)若与方法在同一个类中,则可以直接调用
2.2)若与方法不在同一个类中,则需要通过引用名打点来调用
2.3)若方法为静态的,则直接通过类名打点来调用
4.错误分类:
1)编译错误----都是由于违反语法规则了
2)异常--------运行时发生,找到at后的链接点击
3)程序的运行结果与你所预期的结果不同------------必须得调错
5.如何调错:
1)------------明天讲
2)打桩: System.out.println(数据);
面向对象ooDay7的更多相关文章
- angular2系列教程(六)两种pipe:函数式编程与面向对象编程
今天,我们要讲的是angualr2的pipe这个知识点. 例子
- 一起学 Java(二)面向对象
一.方法函数 函数也称为方法,就是定义在类中的具有特定功能的一段独立代码.用于定义功能,提高代码的复用性. 函数的特点1> 定义函数可以将功能代码进行封装,便于对该功能进行复用:2> 函数 ...
- js面向对象学习 - 对象概念及创建对象
原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...
- 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型
前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的 ...
- .NET 基础 一步步 一幕幕[面向对象之对象和类]
对象和类 本篇正式进入面向对象的知识点简述: 何为对象,佛曰:一花一世界,一木一浮生,一草一天堂,一叶一如来,一砂一极乐,一方一净土,一笑一尘缘,一念一清静.可见"万物皆对象". ...
- 简单分析JavaScript中的面向对象
初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...
- Java程序员应该了解的10个面向对象设计原则
面向对象设计原则: 是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorat ...
- JavaScript学习笔记(三)——this、原型、javascript面向对象
一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...
- 带你一分钟理解闭包--js面向对象编程
上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...
- .NET基础拾遗(2)面向对象的实现和异常的处理基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...
随机推荐
- FileStream与StreamReader区别
FileStream操作字节,更适合大文件. StreamReader操作字符,更适合小文件
- 三步建立自己域名的主页,Github Pages功能简明手册
[task]把自己的页面上传到git上,用github pages功能托管网页. 准备工作: 1.自己的网页文件 2.有个自己的git账号 3.下载安装git.下载地址https://git-scm. ...
- 7款WordPress图片分离对象存储插件 含国内主流云服务存储商
如果我们有用WordPress搭建网站的朋友应该会发现网站文件和数据库其实没有多大,在网站运营几年后数据最大的就是图片.而且图片占用服务器的空间会搬家比较麻烦,而且占用服务求的带宽.我们看到很多的Wo ...
- vivado2018.2封装普通IP模块
将代码打包为一个IP模块 以FIFO代码为例:https://www.cnblogs.com/waqdgstd/p/15267726.html 1.打开向导 2.源文件和外围接口选择,这里不选AXI4 ...
- Chrome(谷歌浏览器)安装Vue插件vue-devtools
安装步骤如下:1.首先给大家提供一个git地址,虽然官网也有地址(https://github.com/vuejs/vue-devtools.git),我认为不太好用给大家提供另一个git地址: ht ...
- 【音视频】FFmpeg打开视频 | 保存图片
1.初始化FFmpeg av_register_all(); //初始化FFMPEG 调用了这个才能正常使用编码器和解码器 但是这个函数如今已经没什么用了,它的就是把你定义和系统初始化的编码器和解码器 ...
- iOS 扩展与分类的区别
1.分类 category 分类的作用就是在不修改原有类的基础上,为一个类扩展方法,最主要的是可以给系统类扩展我们自己定义的方法 分类也能使用@property 添加属性 [通过runtime 关联对 ...
- TypeScript Number
TypeScript Number TypeScript 与 JavaScript 类似,支持 Number 对象. Number 对象是原始数值的包装对象. 语法 var num = new Num ...
- Spring boot jar包解压后重新压缩命令
进入解压的目录/demo,运行 jar cvfM0 demo.jar * 压缩后的项目即可运行 参考:https://www.cnblogs.com/liyanbin/p/6088458.html
- 【BOOK】数据存储—文件存储(TXT、JSON、CSV)
数据存储 文本文件-TXT.JSON.CSV 关系型数据库-MySQL.SQLite.Oracle.SQL Server.DB2 非关系型数据库-MongoDB.Redis 文件打开 open() ...