1、包(掌握)

1、概念(掌握) 

     包就是文件夹,用于区分相同的类名


2、声明格式

     package 包名1.包名2….;

     package:是个关键字

3、带包的类的编译和运行
     javac –d . 文件名.java

4、导包

     import 报名1.包名2…;
     
     如果我在一个类中需要用到不同包下的两个类,并且这两类名同名
     方式1:通过关键字import导入一个包,另一个用类全名
     方式2:两个都用类全名

5、package ,import ,class 的出现顺序(掌握) 

     package-->imoprt-->class

     注意:
          package 最后面有;

          class 类名后面是大括号

          import,package是关键字,不是类名

2、访问权限修饰符

1、四种权限修饰符(掌握) 

     1、private 
               被private修饰的成员只能在本类中使用

     2、默认     
               被默认修饰的成员不仅能在本类中使用,还能在同一个包下的其他类中使用

     3、protected
               被protected修饰的成员不仅能在本类中使用,还能在同一个包下的其他类中使用,主要为了让子类继承时使用.(一句话:就是为了让子类使用的)

     4、public
               不说了

2、访问修饰符汇总

修饰符 \ 元素
类本身
成员变量
成员方法
构造方法
private
内部类使用
Y
Y
Y
默认
Y
Y
Y
Y
protected
内部类使用
Y
Y
Y
public
Y
Y
Y
Y
static
内部类使用
Y
Y
 
abstract
Y
 
Y
 
final
Y
Y
Y
 

推荐

     以后所有的类都用public修饰,并且在一个Java文件中只定义一个类

     所有的成员变量用private修饰

     所有的方法用public修饰(工具类和单例除外)

     接口中所有的方法和成员变量把修饰写全

     所有的构造方法用public修饰

3、内部类(掌握)

1、什么时候用(掌握)

     B类如果要直接使用A类中的 所有(包括私有 ) 成员的时候就把B类定义到A类里面

2、内部类和继承的区别

     内部类可以直接访问外部类的私有成员
     但是子类要想访问外部类的私有成员的话只能通过get/set方法间接访问    

2、访问特点(注意事项)(掌握) 

          1、内部类可以直接访问外部类 所有 成员

          2、外部类想要访问内部类成员,必须内部类创建对象
3、内部类分类
1、成员内部类(掌握) 

               A、其他类如何使用该内部类?

                    外部类名.内部类名 变量名 = new 外部类构造方法.new 内部类构造方法;

                     private:一般就是为了安全

                     static:一般就是为了方便调用

               B、注意问题

                     如果一个内部类含有静态方法,那么该内部类必须被静态修饰

                     如果一个类被定义为静态时,该类中可以没有静态方法
2、局部内部类(掌握) 

               定义在方法中的类

               结论

                     局部内部类访问局部变量,该局部变量必须被final修饰,因为被final 修饰就变成常量,在方法区中,他的生命周期延长了

               面试回答

                     ….自己补全

               被final修饰的变量的生命周期
                    被final修饰变量是常量,所以在方法区的常量池中,常量什么时候从内存中小时呢?没有引用的时候

               在外部类中定义一个方法,这个方法里面定义一个静态变量,测试可不可以,为什么
4、匿名内部类

     概念:没有名字的局部内部类 (掌握)

     前提:必须存在一个类,抽象类或者接口(掌握) 

     格式:     (掌握)
                    new 类名或接口名(){

                          //重写类或者接口中的方法

                          //也可自定义方法

                    };

     本质:其实就是继承了一个类或者实现了一个接口的匿名的子类对象(掌握) 

5、使用(掌握) 

     无论是匿名内部类还是匿名对象,一般使用方式

     1、只调用该类中的一个方法,这种情况一般该抽象类或者该接口只有一个抽象方法时使用

     2、作为实际参数传递(一般该匿名对象或匿名内部类中的方法不超过3个)

6、内部类命名规则(了解)
          成员内部类命名规则: 外部类$内部类.class

局部内部类命名规则: 外部类$1第一级内部类$2第二级内部类$3第三级内部类.class,$后跟数字,数字与内部类对应的层级有关系

匿名内部类命名规则: 外部类$1.class,1代表外部类下的第几个内部类

总结:

$跟 类名 表示是成员内部类,

$后面跟 数字 是匿名内部类,且数字代表个数,

$后面跟 数字$类名 是局部内部类,数字表示层级


4、匿名内部类和匿名对象的区别(理解)

     不同点
          匿名内部类是一个继承了类或者实现了接口的子类对象
          而匿名对象就是这个类的本类对象
     
     相同点
          都作为实际参数传递时使用,或者该对象的方法只调用 1次的时候使用.注意一般情况匿名对象或者匿名内部类对象里面最多有3个方法

5、今天必须掌握的内容。以及常见的笔试题和面试题(学完这个就可以放心学习后面的知识了)

1、说说修饰符,以及他们的特点
    见上面,private,public,默认的,protected,final,static,abstract

2、说说内部类
    内部类的分类,访问特点,局部内部类使用局部变量的注意事项

3、说说匿名内部类和匿名对象
    相同点和不同的

4、abstract关键字不能和哪些关键字共存,为什么
    private , static, final

5、局部内部类访问局部变量必须被什么修饰,为什么
      成员内部类中的方法如果想直接访问外部类的属性怎么访问: 外部类名.this.变量名
      class Outer{
           int num = 9;
           class Inner{
                public void show(){
                            int num = 30;
                            System.out.println(Outer.this.num);
                }
            }
        }

day10_面向对象第五天的更多相关文章

  1. SOLID面向对象的五个设计原则,留空待学习。

     SOLID面向对象的五个设计原则对于开发人员非常重要,其身影在任何大中型软件项目中随处可见,建议必须掌握并灵活应用.此五原则分别为:     单一职责原则(Single Resposibility ...

  2. 是面向对象设计五个基本原则(SOLID)

    单一职责原则 - 搜狗百科 https://baike.sogou.com/v51360965.htm 单一职责原则并不是一个孤立的面向对象设计原则,它是面向对象设计五个基本原则(SOLID)之一.这 ...

  3. js面向对象的五种写法

    第一种: //第1种写法 function Circle(r) { this.r = r; } Circle.PI = 3.14159; Circle.prototype.area = functio ...

  4. java面向对象(五)之多态

    多态 面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. ...

  5. 面向对象(五)--isinstance与issubclass方法、反射、内置方法(部分)、异常处理

    一.isinstance与issubclass方法 1.isinstance是用来判断对象是否是某个类 isinstance(obj,class) 2.issubclass是用来判断一个类是否为另一个 ...

  6. Java 面向对象(五)

    包装类 什么是包装类 在面向对象当中"一切皆对象".基本数据类型变量不是对象,比如 int a = 10; 当中就没有对象,所以就很矛盾.此时我们就可以对基本数据类型进行包装,把基 ...

  7. 面向对象(五)super

    super方法只是为了执行继承父级的init方法,若要详细,请参考别人的博客 class a(object): def __init__(self): print("aINIT") ...

  8. PHP面向对象学习五 类中接口的应用

    类中接口的应用 接口:一种成员属性全部为抽象的特殊抽象类,在程序中同为规范的作用   抽象类:1.类中至少有一个抽象方法.2.方法前需要加abstract 接口: 1.类中全部为抽象方法,抽象方法前不 ...

  9. java基础(十)面向对象(五)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

随机推荐

  1. EF中的那些批量操作

    在使用EF的过程中,我们经常会遇到需要批量操作数据的场景,批量操作有的时候不仅能提高性能,比如使用SqlBulkCopy进入批量插入的时候,而且比较方便操作,提高效率.那么这篇文章就来总结EF中的那些 ...

  2. iOS应用程序间共享数据

    我们知道iOS由于沙盒的存在,应用程序不能越过自己的区域去访问别的存储空间的内容,不过可能有许多场景我们需要在应用程序之间共享数据,比如多个应用共用用户名密码进行登录等.虽然我们不能直接通过文件系统来 ...

  3. NOIP 2001解题报告

    第一题:  有形如:ax3+bx2+cx+d=0  这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d  均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与 ...

  4. Python中通过多个字符分割(split)字符串的方法

    python中字符串自带的split方法一次只能使用一个字符对字符串进行分割,但是python的正则模块则可以实现多个字符分割 import re re.split('-|_','sharejs_ha ...

  5. JSON:org.json的基本用法

    java中用于解释json的主流工具有org.json.json-lib与gson,本文介绍org.json的应用. 官方文档: http://www.json.org/java/ http://de ...

  6. Linux-如何查看登陆shell的类型

    输入一个系统不认识的命令(如#ig)获得系统提示 aix/#ig ksh ig not found #echo $ (适用sh/ksh) aix/#echo $ ksh #echo $SHELL(用户 ...

  7. 使用Google API 下拉刷新或者增加数据 SwipeRefreshLayout

    贴出布局代码: <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/id_swipe_ly" and ...

  8. Chrome 应用推荐 - 下载管理扩展: Chrono

    地址:http://goo.gl/JVdxvg Chrono下载管理器让你轻松高效地管理Chrome浏览器中的下载任务.Chrono与Chrome浏览器紧密地整合在一起,如菜单.工具栏支持等等.Chr ...

  9. Allow windows service to "Interact with desktop"

    Typically, services are designed to run unattended without any UI with any need to interact with des ...

  10. mine layer(2008 World Final C)

    类似于扫雷游戏,在一些格子中散布着一些地雷,具体的埋藏位置并不清楚,但知道每个格子及其周围八个格子的地雷总数.请问此时正中间那一行最多可能有多少地雷(题目假定所有的输入都是奇数行的)? 输入: 第一行 ...