【黑马程序员】内部类学习

------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ---

class A{   

public static class B{}
public class C{ private class D{} } 
public fun(int){ class E{} }
}

1.顶层类A必须是public或frendly.成员内部类可以是各种访问级别。


2.内部类分为成员内部类和局部内部类E。成员内部类分为:
实例内部类C,D和静态内部类B。
(1)实例内部类:
a。实例内部类创建前必须先创建外部类,

A a=new A();

 A.C c=a.new C;

b。实例内部类自动用友外部类实例的应用,可以访问外部类
的所有成员。多重嵌套中可以访问所有外部类。
c。外部类只能访问内部类实例。
d。实例内部类中不能定义静态成员
e。如果AB有同名成员。在B内:this.v表示B的成员,
A.this.v表示A的成员
(2)静态内部类:
a。A.B=new A.B();
b.作为内部成员可以访问外部类的私有静态成员。(顶层类的
公有静态成员本来就是所有类都能访问的)除此之外B就和普
通的类一样。A对于B来说和包名差不多。
(3)局部内部类:在方法中
a。局部内部不能用任何访问控制符修饰,不能包含静态成员2
2.内部类的继承:
(1)若一个外部类F继承了另一个外部类A的内部类C
public class F extends A.C{...}
 F中必须要有一个接受外部类对象的构造函数。
public F(A a){a.super();...}(编译器会检查)
创建F: F f=new F(new A);
(2)在外部类外创建实例内部类的对象时,
A.C c=new A(...).new C(...)
3.匿名类
A a=new A(v){....};
等价于:SubA extends A{ .....};
A a=new SubA(v);
Sub类定义在语句中,是局部类,所以不能有静态化初始代码
块。
(1)匿名类本身没有构造方法,但是会调用父类的构造方法
。如果v是局部变量,并且会在匿名类中用到,必须是final
A a=new A(v){
{....}  //匿名类实例初始化代码,相当于匿名构造函数,
	//会在父类构造函数之后被调用。
int xxx;
void fun(xxx){}; //匿名类成员
}
类体中的代码块可以有无数块,都是在创建对象时执行,在构
造函数之前,代码块之间执行的顺序取决去他们在类体内的顺序。
(2)匿名类除了继承类之外,还可以实现接口
4.类中可以定义接口

接口只能可以定义静态内部类


5.内部类
(1)回调:客户类通过一个外部类的内部类来获得外部类的
功能。用于:当外部类想要实现的接口与自身成员相冲突时。


总结:某个区域内的代码的对某类的访问权关键看能否唯一确

定这个类,不会有歧义

------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ---

### JVM学习笔记与资料整理 JVM(Java Virtual Machine)作为Java程序运行的核心组件,其学习对于中高级Java开发人员尤为重要[^2]。以下内容基于相关引用,总结了黑马程序员JVM学习笔记及相关资料的关键点。 #### 1. JVM基础知识 JVM是Java程序与底层操作系统之间的桥梁,它由三大部分组成:类加载器(ClassLoader)、运行时数据区和执行引擎[^3]。 - **类加载器(ClassLoader)**:负责将`.class`字节码文件加载到内存中,并验证其格式是否正确。 - **运行时数据区**:管理JVM的内存分配,包括方法区、堆、栈、本地方法栈和程序计数器等区域。 - **执行引擎**:将字节码解释为机器码并执行,同时通过即时编译器(JIT)优化性能。 #### 2. 黑马程序员JVM教程特点 黑马程序员的JVM教程被评价为理论与实战结合的良好入门课程[^1]。以下是该课程的主要特色: - 短时间内覆盖JVM的核心知识点。 - 提供实际案例帮助理解JVM的工作机制。 - 配套练习项目巩固所学内容。 #### 3. 进阶学习建议 在完成黑马程序员的JVM课程后,可以参考以下书籍进一步深入学习: - 《深入理解Java虚拟机(第二版)》:详细讲解了JVM的内部机制及优化技巧。 - 《实战Java虚拟机》:通过实际案例分析JVM调优及故障排查。 - 《深入Java虚拟机第二版》:涵盖JVM的最新特性和技术发展。 #### 4. JVM的应用场景 JVM不仅用于运行Java程序,还支持其他基于JVM的语言(如Kotlin、Scala等)。此外,字节码文件的应用场景广泛,例如: - 动态代理生成。 - 字节码增强技术(如AspectJ、ByteBuddy)。 - Java应用性能监控与调优工具开发。 #### 5. 示例代码 以下是一个简单的Java程序示例,展示JVM如何加载并运行代码: ```java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } ``` 编译与运行过程如下: ```bash D:\Java\mycode>javac HelloWorld.java D:\Java\mycode>java HelloWorld Hello World ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值