面向对象(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<面向对象+>的更多相关文章

  1. 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) ...

  2. Spark Streaming揭秘 Day10 从BlockGenerator看接收数据的生命周期

    Spark Streaming揭秘 Day10 从BlockGenerator看接收数据的生命周期 昨天主要介绍了SparkStreaming中对于Receiver的生命周期管理,下面让我们进入到Re ...

  3. ##DAY10 UITableView基础

    ##DAY10 UITableView基础 UITableView继承于UIScrollView,可以滚动. UITableView的每⼀条数据对应的单元格叫做Cell,是UITableViewCel ...

  4. 【JAVA零基础入门系列】Day10 Java中的数组

    什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ...

  5. Alpha冲刺Day10

    Alpha冲刺Day10 一:站立式会议 今日安排: 由林静完成第三方机构的用户信息管理模块 由张梨贤完成第三方机构的委托授权管理模块 由黄腾飞和周静平完成政府人员模块下风险管控子模块下的核实企业风险 ...

  6. [小结] 中山纪念中学2018暑期训练小结(划掉)(颓废记)-Day10

    [小结] 中山纪念中学2018暑期训练小结(划掉)(颓废记)-Day10 各位看众朋友们,你们好,今天是2018年08月14日,星期二,农历七月初四,欢迎阅看今天的颓废联编节目 最近发生的灵异事件有 ...

  7. Day10:html和css

    Day10:html和css <html> <body> <h1>标题</h1> <p>段落</p> </body> ...

  8. Python线程和协程-day10

    写在前面 上课第10天,打卡: 感谢Egon老师细致入微的讲解,的确有学到东西! 一.线程 1.关于线程的补充 线程:就是一条流水线的执行过程,一条流水线必须属于一个车间: 那这个车间的运行过程就是一 ...

  9. day10.函数进阶

    函数的命名空间 从python解释器开始执行之后,就在内存中开辟了一个空间,每当遇到一个变量的时候,就把变量名和值之间的对应关系记录下来. 但是当遇到函数定义的时候解释器只是象征性的将函数名读入内存, ...

  10. Alpha冲刺! Day10 - 砍柴

    Alpha冲刺! Day10 - 砍柴 今日已完成 晨瑶:处理一些杂碎: 反思. 昭锡:主页添加时间选择器,实现随机分布的光点与数据绑定. 永盛:定下来了 MVC 的许多东西,完成 Router 的样 ...

随机推荐

  1. 【转】MySQL索引原理及慢查询优化

    MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位 ...

  2. js中Math.round、parseInt、Math.floor和Math.ceil小数取整小结【转】

    [摘要:之前常常正在代码中看到Math.round.parseInt.Math.floor战Math.ceil那四个函数,固然晓得效果皆能够返回一个整数,然则对他们四者的差别照样没有太清晰,本日便做一 ...

  3. 高速掌握Lua 5.3 —— 扩展你的程序 (1)

    Q:怎样在C中将Lua作为配置文件语言使用? A: "config.lua"文件里: -- window size width = 200 height = 300 "m ...

  4. Java中HashMap实现原理

    类声明: 概述: 线程不安全: <Key, Value>两者都可以为null: 不保证映射的顺序,特别是它不保证该顺序恒久不变: HashMap使用Iterator: HashMap中ha ...

  5. (转)windows环境vue+webpack项目搭建

    首先,vue.js是一种前端框架,一般利用vue创建项目是要搭配webpack项目构建工具的,而webpack在执行打包压缩的时候是依赖node.js的环境的,所以,要进行vue项目的开发,我们首先要 ...

  6. Java命令学习系列(三)——Jmap

    Java命令学习系列(三)——Jmap 2015-05-16 分类:Java 阅读(479) 评论(0) Jmap jmap是JDK自带的工具软件,主要用于打印指定Java进程(或核心文件.远程调试服 ...

  7. javascript 鼠标方式去显示

    document.write("<style type='text/css'>"); document.write(".yyfloat_p{width:209 ...

  8. wysiwyg+ckeditor 安装

    1.下载wysiwyg模块  https://drupal.org/project/wysiwyg 2.下载ckeditor 上传/sites/all/libraries 出现问题: 解决方法: 在文 ...

  9. DataGridView使用技巧十一:DataGridView用户输入时,单元格输入值的设定

    通过DataGridView.CellParsing事件可以设定用户输入的值.下面的示例:当输入英文文本内容的时候,立即被改变为大写.DataGridView.CellParsing在离开编辑的单元格 ...

  10. shell脚本----for循环

      1.方法1 #!/bin/bash for((i=1;i<10;i++)) do echo $i done 保存为for1.sh 直接sh for1.sh 会报错: Syntax error ...