内部类、代码块及访问修饰符权限

内部类

  将一个类定义在另一个给类里面或者方法里面,这样的类就被称为内部类。
  内部类可以分为四种:成员内部类、局部内部类、匿名内部类。

  成员内部类

1 class C{
2     class D{
3
4     }
5 }

  注:

    员内部类可以无条件访问外部类的属性和方法,但是外部类想要访问内部类属性或方法时,必须要创建一个内部类对象,然后通过该对象访问内部类的属性或方法

  访问方式

    外部类名.内部类名 变量名 = new 外部类名().new 内部类名();

  局部内部类

  局部内部类存在于方法中。
  他和成员内部类的区别在于局部内部类的访问权限仅限于方法或作用域内。

  

1 class 外部类 {
2     修饰符 返回值类型 方法名(参数) {
3 class 内部类 {
4 //其他代码
5 }
6 }
7 }

  访问方式

  在外部类方法中,创建内部类对象,进行访问

  匿名内部类

public class Demo {
    public static void main(String[] args) {
        driveCar(new Car(){
            @Override
            public void drive() {
                System.out.println("驾驶着BMW汽车");
            }
        });
    }
    public static void driveCar(Car car){
        car.drive();
    }
}

interface Car {
    void drive();
}

  匿名内部类没有构造方法。也是唯一没有构造方法的内部类。匿名内部类和局部内部类只能访问外部类的final变量。

代码块

  局部代码块

1 class Demo01{
2     public static void main(String[] args)    {
3         {
4                  System.out.println("普通代码块");
5         }
6         System.out.println("代码块之外");
7     }
8 }

  静态代码块

1 public class Person {
2     private String name;
3     private int age;
4      //静态代码块
5     static{
6         System.out.println("静态代码块执行了");
7     }
8 }

  它优先于主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行。

  该类不管创建多少对象,静态代码块只执行一次。

  可用于给静态变量赋值,用来给类进行初始化。

访问修饰符权限

  java的四个关键字:public、protected、default、private(他们决定了紧跟其后被定义的东西可以被谁使用)

  适用范围<访问权限范围越小,安全性越高>

  

  访问权限   类   包  子类  其他包

  public          ∨   ∨    ∨     ∨          (对任何人都是可用的)

  protect        ∨   ∨   ∨     ×    (继承的类可以访问以及和private一样的权限)

  default        ∨   ∨   ×      ×    (包访问权限,即在整个包内均可被访问)

  private        ∨   ×   ×      ×    (除类型创建者和类型的内部方法之外的任何人都不能访问的元素)

原文地址:https://www.cnblogs.com/zhai113/p/11597017.html

时间: 2024-10-11 13:25:21

内部类、代码块及访问修饰符权限的相关文章

匿名对象,内部类,包的声明与访问,访问修饰符,代码块,java的API equals toString方法整理

匿名对象  匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. public class Person{ public void eat(){ System.out.println(); } }创建一个普通对象person p=new person();创建一个匿名对象new person(); 匿名对象的特点: 1创建匿名对象直接使用,没有变量名. new Person().eat() //eat方法被一个没有名字的Person对象调用了. 2,匿名对象在没有指定其

修饰符-包-内部类-代码块执行顺序

1.访问权限修饰符     从大到小的顺序为:public--protected--default--private     private--只能在同一类中使用;     default--不用写出来,默认不加.可以被同一包中的类使用     protected--可以被不同包的子类使用     public--可以被不同包的其它类使用 2.各种修饰符的修饰对象(可修饰哪些:类/接口/方法/属性)(多个修饰符连用是可以没有顺序的!)     1)访问权限修饰符:public/default--

java包,访问修饰符和代码块

包声明: package com.xxx.yyy 需要写在第一行 访问类,导包:import 包名.包名.类名 import java.util.Scanner import com.xxx.yyy.A; 访问修饰符:public,protected,default,private private: 只能在本类中使用 private int a=1; default: 在本类中和同包内使用 int b=2; protected: 在本类,本包和相关子类中使用 protected int c=3;

黑马程序员_包、访问修饰符以及内部类

------- <a href="http://www.itheima.com" target="blank">android培训</a>.<a href="http://www.itheima.com" target="blank">java培训</a>.期待与您交流! ---------- 一.包:  1.定义包使用关键字:package: 1).注意事项: A.packag

匿名对象,内部类和访问修饰符应用

一.匿名对象 1.概念: 匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 如:已经存在的类: public class Person{ public void eat(){ System.out.println(); } } 普通类创建: Person p = new Person(); 创建一个匿名对象: new Person(); 2.匿名对象的特点: ①创建匿名对象直接使用,没有变量名. new Person().eat() //eat方法被一个没有名字的P

JAVA笔记8__内部类/链表的实现/包装类、享元设计模式/包、访问修饰符

/** * 内部类:在一个类的内部中定义的类 * 1. class Outer{ * class Inner{} * } * 2. class Outer{ //方法内部类 * public void doSomething(){ * class Inner(){} * } * } * 2*:1.方法内部类只能在定义该内部类的方法中实例化 * 2.方法内部类对象不能使用该内部类所在方法的非final局部变量 * (原因:局部变量随着方法调用的结束而消失,而new出来的内部类对象的作用域是可以在方

1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用

1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用 成员变量(属性)①类中添加成员变量 访问修饰符 类型 变量名 private String name ②实例化对象调用类的构造方法类构造对象,Teacher one = new Teacher(): 有static的可以直接调用,因为static是类级别的 ③JavaBean里边一般规则应该有公共的无参构造应该有符合命名规范的get/set方法 ④对象的回收:没有任何引用指向该对象时,GC会回收 主动回收:对象 = nu

权限访问修饰符

/* * * 实现结果证明了一件事情: * * 关于权限访问修饰符: * * 首先 * * 总的原则:只有当类可以访问的时候才考虑成员的访问权限问题,类不可以访问的时候,成员自然也不可以访问. * * * 类的访问修饰符 : 默认.public * * 默认: 只允许同一个子包中的类对其进行访问,位于不同包中的类,即使使用完全限定名称,也无法访问这个类 *  public: 突破了包的封装,允许不同包中的类对其进行访问,但访问时需要使用完全限定名称 * * 注意:除非是类A和类B是位于同一个包中

JAVA 中的权限访问修饰符(public,protected,default,private )

JAVA中有四个权限访问修饰符:public,protected,default,private 注意:这里讲的是对类中属性和方法的访问权限,并不是类的访问权限 1.default:包访问权限 如果什么也没写,默认为default.当然也可以显式得给出default权限 default修饰的属性和方法,包中的所有其他类对那个成员都有访问权限,但是对于这个包之外的所有类没有访问权限. 2.public: 接口访问权限 public修饰的属性和方法对每个类都是可见的 3.private:类内访问权限