权限修饰符,

    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. TEXT 4 A question of standards

    TEXT 4 A question of standards 一个关乎标准的问题 Feb 9th 2006 From The Economist Global Agenda More suggesti ...

  2. servlet和JSP页面乱码问题

    JSP和Servlet的中文乱码处理 前几天学习了JSP和Servlet中有关中文乱码的一些问题,写成了博客,今天进行更新一下.应该是可以解决日常的乱码问题了.现在作以下总结希望对需要的人有所帮助.我 ...

  3. memory management

    1. 高端内存: 内存的物理寻址范围比虚拟寻址范围大的多,有一些内存页不能永久的映射到内核地址空间. 2. 高端内存和低端内存是内核对内存物理页的划分. 参考:http://ilinuxkernel. ...

  4. 大型运输行业实战_day03_2_使用ajax将请求页面与请求数据分离

    1.引入jquery 1.添加jquery包 2.在要使用jquery的页面中引入jquery 引入jquery后必须检查是否引入正确,这里值得注意的是 springMVC默认情况先会拦截 js文件, ...

  5. update from

    update table1 set table1.column1 =(select table2.column1 from table2  where 关联条件) where exists(selec ...

  6. 了解大数据的特点、来源与数据呈现方式以及用Python写Mad Libs游戏

    作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2620. 1.浏览2019春节各种大数据分析报告,例如: 这世间,再 ...

  7. Python vars() 函数

    Python vars() 函数  Python 内置函数 描述 vars() 函数返回对象object的属性和属性值的字典对象. 语法 vars() 函数语法: vars([object]) 参数 ...

  8. SQL日期和时间函数

    使用这些函数可以计算日期和时间值.例如,假设您希望了解通常在一周中哪一天的销售量最高.使用 DAYOFWEEK 函数,您可以创建一个公式来标识每天的销售订单数量.再比如,假设您希望比较在过去的一年中的 ...

  9. Spring boot starter pom的依赖关系说明

    Spring Boot 通过starter依赖为项目的依赖管理提供帮助.starter依赖起始就是特殊的maven依赖,利用了传递依赖解析,把常用库聚合在一起,组成了几个为特定功能而定制的依赖. sp ...

  10. Oracle 进入数据库 新增用户 修改密码方法

    1.以管理员身份进入 SQL plus 2.输入:sys/manager as sysdba 3.新增用户: 创建新用户: create user 用户名 identified by 密码; 解锁用户 ...