权限修饰符,

    Public  >protected >default > private

    public 公共权限   随便都可以访问

    protected  子类可以访问权限  (子类跨包访问父类)

package day04.demo01;
public class Demo02 {
public void public01(){}
protected static void protected01(){
System.out.println("protected");
}
static void default01(){
System.out.println("default");
}
private static void private01(){
System.out.println("private");
}
}

方法定义在demo01下    在demo02下进行调用

    default 默认权限  同一包下    出了包 就访问不到default01方法

    private  出了当前类 其他类都不能访问

内部类,

  1.在类的内部,创建类,这个类称为内部类 这个类跟普通类没有区别

     2.内部类和类只是内部和外部的关系,不是子父类的关系 ,但可以使用this关键字

class Outer{
int num=10;
public void method(){
System.out.println("Out Method");
}
class Inner{//內部类
int num=20;
public void method(){
System.out.println("Inner Method");
System.out.println(num);//20 就近原则
System.out.println(this.num);//使用this调用当前类下成员变量
System.out.println(Outer.this.num);//使this指向Outer类中的成员变量
Outer.this.method();//调用Outer下的method方法
}
}
}

 说明  在Inner的对象中有一个值指向了Outer对象

 

输出结果
Inner Method
20
20
10
Out Method

  

局部内部类,

     位置:方法中 

class Outer{
int num=10;
public void method(){
class Inner{//內部类 创建在在方法中 称为 局部内部类
int num=20;
public void method(){
System.out.println("Inner Method");
System.out.println(num);//20
System.out.println(this.num);//使用this调用Outer类下成员变量 20
System.out.println(Outer.this.num);//10
}
}
Inner i=new Inner();//必须在Inner类后调用 否则无法识别
i.method();
System.out.println(i.num);//20
} }

  

输出结果:
Inner Method
20
20
10
20

  

匿名内部类,

  一般的实现接口类

  

interface Inter01 {
public abstract void eat();
} public class Animal implements Inter01 {
public void eat() {
System.out.println("eat");
} public static void main(String[] args) {
Animal a = new Animal();
a.eat();
}
}

  使用匿名内部类:创建一个类(抽象类,接口)   并创建该类的对象  实现方法

      优点:如果一个实现接口类只调用一次,使用内部来调取,会节约内存

    注意事项:

      在方法中匿名内部类外  定义一个变量  如果匿名内部类使用了该变量  则改变量需要使用final 修饰

      原因:因为这个匿名内部类对象执行完以后还会存在   在匿名内部类中会调用到该变量

       如果该变量在执行方法完后,会消失,所以该变量必须被final修饰成为常量存储在方法区的常量池中。

class Test {
public void method() {
final int num=10;
new Inter01() {
@Override
public void eat() {
System.out.println(num);
}
};
}
}

  

day04(权限修饰符,内部类,局部内部类,匿名内部类)的更多相关文章

  1. 06 面向对象:多态&抽象类&接口&权限修饰符&内部类

    多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父 ...

  2. static介绍、内部类、final、权限修饰符的作用范围

    static 关键字:(可用于修饰方法.变量)     static 特点:         static是静态修饰符,一般修饰成员变量.被static修饰的属于全局共享.被static修饰的成员属于 ...

  3. 包和访问权限修饰符,.单例设计模式,.Object类常用方法,.内部类

    1.包和访问权限修饰符 1.1 包 为什么要导包? 将字节码文件(.class)文件进行分类存放 --->包 其实就是文件夹 import java.util.Arrays; 包的划分规则 方案 ...

  4. java自学第3期——继承、多态、接口、抽象类、final关键字、权限修饰符、内部类

    一.继承: 关键字extends /* 定义一个父类:人类 定义父类格式:public class 父类名称{ } 定义子类格式:public class 子类名称 extends 父类名称{ } * ...

  5. 零基础学习java------day10------带包编译,权限修饰符,内部类,调式,junitTest

    0.  带包编译 解决使用notepad++编写的java类中如果有package的解决方案,如下代码 package com._51doit.test; class HelloWorld{ publ ...

  6. Java基础学习笔记(四) - 认识final关键字、权限修饰符和内部类

    一.final关键字 为什么要使用 final 关键字? 通过继承我们知道,子类可以重写父类的成员变量和方法.final 关键字可以用于修饰父类,父类成员变量和方法,使其内容不可以被更改. 1.被修饰 ...

  7. 匿名类、包、权限修饰符_DAY10

    1:内部类(理解) (1)把类定义在一个类的内部. (2)特点:   A:内部类可以直接使用外部类的成员,包括私有.   B:外部类要使用内部类成员,必须创建对象使用.    例子: public c ...

  8. 面向对象 继承 抽象类 接口 static 权限修饰符

    Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...

  9. Java中的四种权限修饰符

    权限修饰符   public protected [default] private 同一个类 YES YES YES YES 同一个包 YES YES YES NO 不同包子类 YES YES NO ...

随机推荐

  1. 关于U3D场景烘焙的一个想法

    U3D进行场景烘焙时,发现阴影无法选择烘焙质量,其实想一下也合理,毕竟是烘焙,是将光照与阴影信息保存到lightmap中,因此阴影的质量取决于光照贴图的精度, 就算光照贴图再大,也远不可能达到实时光照 ...

  2. 重学Java

    Java web 的课程告一段落了 现在我觉得我应该重新学习一下 Java基础  先分享下昨天学习递归后写的两个短短的代码 1.求5的阶乘 package test; public class fiv ...

  3. ArcMap导入图层出现General function failure问题

    问题描述: 使用ArcMap的FeatureClassToFeatureClass命令导入图层,出现如下图的错误提示: 解决方法: 参考http://forums.esri.com/thread.as ...

  4. 漫谈四种神经网络序列解码模型【附示例代码】 glimpse attention

    漫谈四种神经网络序列解码模型[附示例代码] http://jacoxu.com/encoder_decoder/ [视觉注意力的循环神经网络模型]http://blog.csdn.net/leo_xu ...

  5. Python 遍历文件夹 listdir walk 的区别

    一.一级目录import os path = 'd:\file'; for filename in os.listdir(path): print(os.path.join(path,filename ...

  6. 兼容多浏览器的网页复制插件(ZeroClipboard)

    前言: 常规利用JS编写的网页复制功能是最简单的方法,但是只对IE有效,无法做到兼容其它浏览器,对其他浏览器也就只能弹窗提示用户手动复制了. <script type="text/ja ...

  7. ubuntu系统:插入优盘read-only file system

    http://sharadchhetri.com/2013/12/19/how-to-fix-read-only-usb-pen-drive-in-ubuntu/ To fix USB pen dri ...

  8. 提交代码到远程GIT仓库,代码自动同步到远程服务器上。

    现在一般都会通过github,gitlab,gitee来管理我们的代码.我们希望只要我本地push了代码,远程服务器能自动拉取git仓库的代码,进行同步. 这就需要用到各仓库为我们提供的webhook ...

  9. php 使用PHPExcel 导出数据为Excel

    <?php require_once 'PHPExcel/Classes/PHPExcel.php'; /** * 导出数据为Excel * @param array $fieldArr 标题数 ...

  10. php的反射

    我们可以在PHP运行时,通过PHP的反射动态的获取类的方法.属性.参数等详细信息.   用途:插件的设计,文档的自动生成,扩充PHP语言. <?php class Person { const ...