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 的样 ...
随机推荐
- 李洪强iOS开发之-sql数据库的使用
一,创建工程 二: 导入头文件 三:导入 四: 数据库增删改查 //因为是结构体类型,所以用assign //1.创建数据库(保存路径) @property(nonatomic,assign)sqli ...
- oracle相关链接
shilei1的个人空间 http://blog.itpub.net/196700/
- Python中的画图初体验
学到<父与子编程之旅>的16章了,跟书上的例子进行学习,学会了画圆,我又找到了画线的方法,于是就可以在screen上画日本国旗了: 手动画的不好看,也可以不手动画,直接画线: 当然也可以直 ...
- 一款javascript实现的超炫的下拉选择框
今天为给大家带来一款javascript实现的超炫的下拉选择框.下拉的列表由半用透明的幽灵按钮组成.显示下拉的时候,列表项由左右两侧飞入.消息时飞向左右两侧.一起看下效果图 在线预览 源码下载 实 ...
- 梦想天空(关注前端开发技术 html5+css3)
http://www.cnblogs.com/lhb25/p/must-read-links-for-web-designers-and-developers-volume-32.html
- git commit 多行注释方法说明
为了提高项目质量,不仅仅是代码的质量,而且还包括代码管理的质量. 所以,详细的git commit message 必不可少. 现在记录一下git commit 多行详细的commit 信息. 首先, ...
- Extjs Ext.ux.IFrame的用法 以及父子窗口间函数相互调用
Extjs Ext.ux.IFrame的用法 以及父子窗口间函数相互调用 Ext.ux.IFrame Extjs官方提供的一个组件,可以很方便的使用. 这样就完成了一个简单的IFrame的使用,通过E ...
- Win10如何显示系统托盘所有图标
最快就是小娜搜索通知 打开Win10“设置”,依次进入“系统 – 通知和操作”,设置界面如图: 点击“选择在任务栏上显示哪些图标”打开如图所示的界面:
- Linux下安装rpm出现error: Failed dependencies
在Linux下安装rpm包时经常会遇到下面这个问题: error: Failed dependencies: xxxxxxxxxxxxxxxxxxxxxx 遇到此问题时可以在安装rpm包命令的后面加两 ...
- [转]ViewPager学习笔记(一)——懒加载
在项目中ViewPager和Fragment接口框架已经是处处可见,但是在使用中,我们肯定不希望用户在当前页面时就在前后页面的数据,加入数据量很大,而用户又不愿意左右滑动浏览,那么这时候ViewPag ...