权限修饰符,

    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. How to Pronounce SAY, SAYS, and SAID

    How to Pronounce SAY, SAYS, and SAID Share Tweet Share Tagged With: Comparison I’ve noticed many non ...

  2. JSP复习

    3.2.2 JSP指令元素: JSP指令 (1) page指令:定义整个页面的全局属性 (2)include指令:用于包含一个文件或代码的文件 (3)taglib指令:用来引用自定义的标签或第三方标签 ...

  3. javascript 函数对象

    http://hi.baidu.com/gdancer/blog/item/a59e2c12479b4e54f919b814.html jQuery的一些写法就是基于这篇文章的原理的..     函数 ...

  4. sysdig

    centos 7 安装 https://sysdig.com/opensource/sysdig/install/ 1) Trust the Draios GPG key, configure the ...

  5. vmadm命令

    VMADM(1M)VMADM(1M) 名称 vmadm - 管理SmartOS虚拟机 概要 / usr / vm / sbin / vmadm <command> [-d] [-v] [特 ...

  6. 大型运输行业实战_day04_3_高级查询+分页

    1.高级查询+分页最终结果 2.分页的本质分析 前端传入:当前页  和  每页显示条数 数据库必须查询出:数据列表 和 总共条数 页面显示包括的数据有: 列表 +  每页显示条数 + 当前页 + 总共 ...

  7. jQuery源码解读二(apply和call)

    一.apply方法和call方法的用法: apply方法: 语法:apply(thisObj,[,argArray]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象. 说明:如果argArr ...

  8. 奇偶数判断2(if else+switch语句)

    public class 奇偶数判断2 { public static void main(String [] agrs){ float s = 17f; //定义浮点型数据s float h = s ...

  9. TensorFlow—张量运算仿真神经网络的运行

    import tensorflow as tf import numpy as np ts_norm=tf.random_normal([]) with tf.Session() as sess: n ...

  10. 84. Largest Rectangle in Histogram (Array, Stack; DP)

    Given n non-negative integers representing the histogram's bar height where the width of each bar is ...