day10<面向对象+>
面向对象(package关键字的概述及作用)
面向对象(包的定义及注意事项)
面向对象(带包的类编译和运行)
面向对象(不同包下类之间的访问)
面向对象(import关键字的概述和使用)
面向对象(四种权限修饰符的测试)
面向对象(类及其组成所使用的常见修饰符)
面向对象(内部类概述和访问特点)
面向对象(成员内部类私有使用)
面向对象(静态成员内部类)
面向对象(成员内部类的面试题)
面向对象(局部内部类访问局部变量的问题)
面向对象(匿名内部类的格式和理解)
面向对象(匿名内部类重写多个方法调用)
面向对象(匿名内部类在开发中的应用)
面向对象(匿名内部类的面试题)
面向对象(复习第6天)
面向对象(复习第10天)
面向对象(复习第7天)
面向对象(复习第8天)
面向对象(复习第9天)
###10.01_面向对象(package关键字的概述及作用)(了解)
A:为什么要有包
将字节码(.class)进行分类存放
包其实就是文件夹
B:包的概述
举例:
学生:增加,删除,修改,查询
老师:增加,删除,修改,查询
...
方案1:按照功能分
com.heima.add
AddStudent
AddTeacher
com.heima.delete
DeleteStudent
DeleteTeacher
com.heima.update
UpdateStudent
UpdateTeacher
com.heima.find
FindStudent
FindTeacher
方案2:按照模块分
com.heima.teacher
AddTeacher
DeleteTeacher
UpdateTeacher
FindTeacher
com.heima.student
AddStudent
DeleteStudent
UpdateStudent
FindStudent
###10.02_面向对象(包的定义及注意事项)(掌握)
A:定义包的格式
package 包名;
多级包用.分开即可
B:定义包的注意事项
A:package语句必须是程序的第一条可执行的代码
B:package语句在一个java文件中只能有一个
C:如果没有package,默认表示无包名
C:案例演示
包的定义及注意事项
###10.03_面向对象(带包的类编译和运行)(掌握)
A:如何编译运行带包的类
a:javac编译的时候带上-d即可
javac -d . HelloWorld.java
b:通过java命令执行。
java 包名.HellWord
###10.04_面向对象(不同包下类之间的访问)(掌握)
A:案例演示
不同包下类之间的访问
###10.05_面向对象(import关键字的概述和使用)(掌握)
A:案例演示
为什么要有import
其实就是让有包的类对调用者可见,不用写全类名了
B:导包格式
import 包名;
注意:
这种方式导入是到类的名称。
虽然可以最后写,但是不建议。
C:package,import,class有没有顺序关系(面试题)
###10.06_面向对象(四种权限修饰符的测试)(掌握)
A:案例演示
四种权限修饰符
B:结论
本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类)
private Y
默认 Y Y
protected Y Y Y
public Y Y Y Y
###10.07_面向对象(类及其组成所使用的常见修饰符)(掌握)
A:修饰符:
权限修饰符:private,默认的,protected,public
状态修饰符:static,final
抽象修饰符:abstract
B:类:
权限修饰符:默认修饰符,public
状态修饰符:final
抽象修饰符:abstract
用的最多的就是:public
C:成员变量:
权限修饰符:private,默认的,protected,public
状态修饰符:static,final
用的最多的就是:private
D:构造方法:
权限修饰符:private,默认的,protected,public
用的最多的就是:public
E:成员方法:
权限修饰符:private,默认的,protected,public
状态修饰符:static,final
抽象修饰符:abstract
用的最多的就是:public
F:除此以外的组合规则:
成员变量:public static final
成员方法:
public static
public abstract
public final
###10.08_面向对象(内部类概述和访问特点)(了解)
A:内部类概述
B:内部类访问特点
a:内部类可以直接访问外部类的成员,包括私有。
b:外部类要访问内部类的成员,必须创建对象。
外部类名.内部类名 对象名 = 外部类对象.内部类对象;
C:案例演示
内部类极其访问特点
public class Demo1_InnerClass { public static void main(String[] args) { //Inner i = new Inner(); //i.method(); //外部类名.内部类名 = 外部类对象.内部类对象 Outer.Inner oi = new Outer().new Inner(); //创建内部类对象 oi.method(); } } class Outer { private int num = 10; //内部类可以直接访问外部类的成员,包括私有 class Inner { public void method() { System.out.println(num); } } } |
###10.09_面向对象(成员内部类私有使用)(了解)
private
public class Demo2_InnerClass { public static void main(String[] args) { //Outer.Inner oi = new Outer().new Inner(); //oi.method(); Outer o = new Outer(); o.print(); } } class Outer { private int num = 10; private class Inner { public void method() { System.out.println(num); } } public void print() { Inner i = new Inner(); //在该类中创建私有内部类的对象 i.method(); } } |
###10.10_面向对象(静态成员内部类)(了解)
static
B:成员内部类被静态修饰后的访问方式是:
外部类名.内部类名 对象名 = 外部类名.内部类对象;
###10.11_面向对象(成员内部类的面试题)(掌握)
A:面试题
要求:使用已知的变量,在控制台输出30,20,10。
public class Test1_InnerClass { public static void main(String[] args) { Outer.Inner oi = new Outer().new Inner(); oi.show(); } } //要求:使用已知的变量,在控制台输出30,20,10。 //内部类之所以能获取到外部类的成员,是因为他能获取到外部类的引用外部类名.this class Outer { public int num = 10; class Inner { public int num = 20; public void show() { int num = 30; System.out.println(num); System.out.println(this.num); System.out.println(Outer.this.num); } } } |
###10.12_面向对象(局部内部类访问局部变量的问题)(掌握)
A:案例演示
局部内部类访问局部变量必须用final修饰
局部内部类在访问他所在方法中的局部变量必须用final修饰,为什么?
因为当调用这个方法时,局部变量如果没有用final修饰,他的生命周期和方法的生命周期是一样的,当方法弹栈,这个局部变量也会消失,那么如果局部内部类对象还没有马上消失想用这个局部变量,就没有了,如果用final修饰会在类加载的时候进入常量池,即使方法弹栈,常量池的常量还在,也可以继续使用
但是jdk1.8取消了这个事情,所以我认为这是个bug
###10.13_面向对象(匿名内部类的格式和理解)
A:匿名内部类
就是内部类的简化写法。
B:前提:存在一个类或者接口
这里的类可以是具体类也可以是抽象类。
C:格式:
new 类名或者接口名(){
重写方法;
}
D:本质是什么呢?
是一个继承了该类或者实现了该接口的子类匿名对象。
E:案例演示
按照要求来一个匿名内部类
public class Demo1_NoNameInnerClass { public static void main(String[] args) { Outer o = new Outer(); o.method(); } } interface Inter { public void print(); } class Outer { class Inner implements Inter { public void print() { System.out.println("print"); } } public void method(){ //Inner i = new Inner(); //i.print(); //new Inner().print(); //Inter i = new Inner(); //父类引用指向子类对象 new Inter() { //实现Inter接口 public void print() { //重写抽象方法 System.out.println("print"); //灰色部分代表Inner的子类对象 } }.print(); } } |
###10.14_面向对象(匿名内部类重写多个方法调用)
A:案例演示
匿名内部类的方法调用
public class Demo2_NoNameInnerClass { public static void main(String[] args) { Outer o = new Outer(); o.method(); } } interface Inter { public void show1(); public void show2(); } //匿名内部类只针对重写一个方法时候使用 class Outer { public void method() { /*new Inter(){ //实现该接口就把该接口中的方法都重写 public void show1() { System.out.println("show1"); } public void show2() { System.out.println("show2"); //灰色部分代表Inner的子类对象 } }.show1(); //调用了show1()方法 new Inter(){ public void show1() { System.out.println("show1"); } public void show2() { System.out.println("show2"); } }.show2();*/ Inter i = new Inter(){ public void show1() { System.out.println("show1"); } public void show2() { System.out.println("show2"); } /*public void show3() { System.out.println("show3"); }*/ }; i.show1(); i.show2(); //i.show3(); //匿名内部类是不能向下转型的,因为没有子类类名 } } |
###10.15_面向对象(匿名内部类在开发中的应用)
A:代码如下
public class Test1_NoNameInnerClass { public static void main(String[] args) { //如何调用PersonDemo中的method方法呢? PersonDemo pd = new PersonDemo (); //pd.method(new Student()); pd.method(new Person() { public void show() { System.out.println("show"); } }); } } //这里写抽象类,接口都行 abstract class Person { public abstract void show(); } class PersonDemo { //public void method(Person p) { //Person p = new Student(); //父类引用指向子类对象 /* Person p = new Person(){ public void show() { System.out.println("show"); } }; */ public void method(Person p) { p.show(); //编译看父类,运行看子类 } } class Student extends Person { public void show() { System.out.println("show"); } } |
###10.16_面向对象(匿名内部类的面试题)
A:面试题
public class Test2_NoNameInnerClass { public static void main(String[] args) { //用类去调用一个方法,说明这个方法是静态的 //Outer.method().show(); //链式编程,每次调用方法后还能继续调用方法,证明调用方法返回的是对象 Inter i = Outer.method(); i.show(); } } //按照要求,补齐代码 interface Inter { void show(); } class Outer { //补齐代码 public static Inter method() { return new Inter() { //代表Inner的子类对象 public void show() { System.out.println("HelloWorld"); } }; } } //要求在控制台输出”HelloWorld” |
###10.17_day10总结
把今天的知识点总结一遍。
根据笔记复习6-10天的内容
day10<面向对象+>的更多相关文章
- python_way day10 python和其他语言的作用域 、 python2.7多继承和3.5多继承的区别 、 socket 和 socketserver源码(支持并发处理socket,多进程,多线程)
python_way day10 1.python的作用域和其他语言的作用域 2.python2.7多继承和3.5多继承的区别 3.socket和socketserver源码(并发处理socket) ...
- Spark Streaming揭秘 Day10 从BlockGenerator看接收数据的生命周期
Spark Streaming揭秘 Day10 从BlockGenerator看接收数据的生命周期 昨天主要介绍了SparkStreaming中对于Receiver的生命周期管理,下面让我们进入到Re ...
- ##DAY10 UITableView基础
##DAY10 UITableView基础 UITableView继承于UIScrollView,可以滚动. UITableView的每⼀条数据对应的单元格叫做Cell,是UITableViewCel ...
- 【JAVA零基础入门系列】Day10 Java中的数组
什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ...
- Alpha冲刺Day10
Alpha冲刺Day10 一:站立式会议 今日安排: 由林静完成第三方机构的用户信息管理模块 由张梨贤完成第三方机构的委托授权管理模块 由黄腾飞和周静平完成政府人员模块下风险管控子模块下的核实企业风险 ...
- [小结] 中山纪念中学2018暑期训练小结(划掉)(颓废记)-Day10
[小结] 中山纪念中学2018暑期训练小结(划掉)(颓废记)-Day10 各位看众朋友们,你们好,今天是2018年08月14日,星期二,农历七月初四,欢迎阅看今天的颓废联编节目 最近发生的灵异事件有 ...
- Day10:html和css
Day10:html和css <html> <body> <h1>标题</h1> <p>段落</p> </body> ...
- Python线程和协程-day10
写在前面 上课第10天,打卡: 感谢Egon老师细致入微的讲解,的确有学到东西! 一.线程 1.关于线程的补充 线程:就是一条流水线的执行过程,一条流水线必须属于一个车间: 那这个车间的运行过程就是一 ...
- day10.函数进阶
函数的命名空间 从python解释器开始执行之后,就在内存中开辟了一个空间,每当遇到一个变量的时候,就把变量名和值之间的对应关系记录下来. 但是当遇到函数定义的时候解释器只是象征性的将函数名读入内存, ...
- Alpha冲刺! Day10 - 砍柴
Alpha冲刺! Day10 - 砍柴 今日已完成 晨瑶:处理一些杂碎: 反思. 昭锡:主页添加时间选择器,实现随机分布的光点与数据绑定. 永盛:定下来了 MVC 的许多东西,完成 Router 的样 ...
随机推荐
- 技术blog链接
http://www.cnblogs.com/anrainie/ 蔡羽 基础知识漫谈 http://blog.csdn.net/ioio_jy 姜晔的技术专栏 从苏宁电器到卡巴斯基
- LeetCode: Combination Sum II 解题报告
Combination Sum II Given a collection of candidate numbers (C) and a target number (T), find all uni ...
- 一款基jquery超炫的动画导航菜单
今天给大家分享一款基jquery超炫的动画导航菜单.这款导航菜单,初始时页面中间一个按钮,单击按钮,菜单从左侧飞入页中.再次单击按钮,导航飞入左侧消息.动画效果很非常炫.一起看下效果图: 在线预览 ...
- 一款由html5 canvas实现五彩小圆圈背景特效
之前介绍了好几款html5 canvas实现的特效.今天要为大家介绍一款由html5 canvas实现五彩小圆圈背景特效.五彩的小圆圈渐显渐失的特效.效果图如下: 在线预览 源码下载 html代码 ...
- 【C#/WPF】图像变换的Undo撤销——用Stack命令栈
需求: 图层中有一张图片,可以对该图层进行平移.缩放.旋转操作,现在要求做Undo撤销功能,使得图层回复上一步操作时的状态. 关于图像的平移.缩放.旋转,可以参考在下的另一篇博客的整理: http:/ ...
- nginx日志分析利器GoAccess(转)
面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记 ...
- linux设置开机服务自动启动/关闭自动启动命令
linux设置开机服务自动启动/关闭自动启动命令 2012-02-06 15:13 [root@localhost ~]# chkconfig --list 显示开机可以自动启动的服务[roo ...
- 将string转换成char型的一般方法
C++文件读取中: infile in: in.open("file.dat",ios::in); 这样是能够的. 可是 string a; a="file.dat&qu ...
- 判断radiobutton是否被选中
<tr> <td class="label">是否显示:</td> <td> <?php if($cates_data[0][ ...
- R笔记4:ggplot绘制商务图表--玫瑰图
我们说Excel有难度的图表,可以考虑ggplot2是否更方便,本帖的例子就是用ggplot做玫瑰图. Excel做玫瑰图有一定难度,可以使用雷达图或圆环图来构建,我的博客上曾有多个帖子讨论这个,见 ...