java之9天 内部类

[size=medium][b]内部类,静态内部类,全局内部类[/b][/size]


/**
* 内部类的访问规则:
* 1.内部类可以直接访问外部类中的成员,包括私有
* 之所以可以直接访问外部类中的成员,是因为内部类中持有一个外部类的引用, 格式为 外部类名.this.成员
* 2.外部类要访问内部类,必须建立对象
*
*访问格式:
*当内部类定义在外部类的成员位置上,而且非私有, 可以在外部其他类中可以直接建立内部类对象.
*格式:
* 外部类名.内部类名 变量名=外部类对象.内部类对象;
* Outer.Inner in=new Outer().new Inner();
*2,当外部类在成员位置上,就可以被成员修饰符所修饰
* 比如: private : 将外部类中的内部类进行封装
* static : 内部类就具备static 特性 ,只能访问 外部类的static成员.出现访问局限
* (静态内部类: 一般是 应用的数据全是 静态的数据的时候就可以定了)
*
*3.其他外部类中怎么访问 静态内部类的非静态成员
* new Outer.Inner2().function();
*
*4.其他外部类中怎么访问静态内部类中的静态成员.
* Outer.Inner2.function1();
*
* 注意 : 当内部类中定义了静态成员,该内部类必须是static的
* 当外部类中的静态方法访问内部类时候,该内部类也必须是static的
*
*/
class Outer{
private int x=3;

private static int y=5;
//外部类中 访问内部类中的成员
void method(){
Inner in=new Inner();
in.funtion();
}

//放在一个内的内部
class Inner{
int x=4;
//可以直接访问外部类中的成员
void funtion(){
int x=6;
System.out.println("内部类:"+x); // 6
System.out.println("内部类:"+this.x); // 4
System.out.println("内部类:"+Outer.this.x); // 3
}

/* 非静态内部类中不能有 静态成员
static int y=8;
static void function1(){
System.out.println("内部类:"+x);
}*/
}

private class Inner1{
int x=4;
void function(){
int x=6;
System.out.println("内部类:"+x); // 6
System.out.println("内部类:"+this.x); // 4
System.out.println("内部类:"+Outer.this.x); // 3
}

}
static class Inner2{

//静态内部类的 非静态成员
void function(){
System.out.println("静态内部类:"+y);
}
//静态内部类的静态成员
static void function1(){
System.out.println("静态内部类:"+y);
}

}

//外部类中的静态成员
public static void method1(){
//访问 该外部类中的静态内部类静态方法
Inner2.function1();

//new Inner1().function(); //报错 因为 Inner1 不是静态内部类
}

}

public class InnerClassDemo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Outer out=new Outer();
out.method();

//如果直接访问内部类中的额function
Outer.Inner in=new Outer().new Inner();// 外部类对象 .new 内部类对象
in.funtion();

//静态内部类中的非静态成员
Outer.Inner2 in2=new Outer.Inner2();
in2.function();
new Outer.Inner2().function();

//静态内部类 中的静态成员
Outer.Inner2.function1();
}
}

/**
* 当描述事物时, 事物的内部还有事物,该事物用内部类来描述
* 因为内部事务在使用外部事务的内容.
* 比如 身体 和 心脏 的关系
*/
class Body{
private class XinZang{ //之所以私有 , 是不让任何人访问
int jump=270; //跳动的次数
int speed=80; //血流速度
void show(){
System.out.println("心跳:"+jump+";血流速度:"+speed+"脉");
}
}

public void seeXinZang(){ // 一个心脏病人 要看医生
//里面可以加入判断 是不医生? 身体是不是有病? 有:就给他们看 没有:就不给 等等
new XinZang().show();
}
//比如还可以 是否 被女朋友踹了? 是: 就伤心 不是: 就开心 哈哈
}


[size=medium][b]局部内部类[/b][/size]

/**
* 内部类定义在局部时候
* 1.不可以被成员修饰符修饰 (private static 等)
* 2.可以直接访问外部类中的成员,因为还持有外部类中的引用
* 但是不可以访问它所在的局部中的变量, 只能访问被final修饰的局部变量.
*/
class Outer{
int x=3;
void method(final int k){
int x=4;
final int y=5;
class Inner{ //局部的内部类
void function(){
System.out.print(Outer.this.x);
System.out.print(y);
System.out.print(k);
}
}
new Inner().function();
}
}


public class InnerClassDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Outer out=new Outer();
out.method(7);
out.method(8);
}

}


[size=medium][b]匿名内部类[/b][/size]

/**
* 匿名内部类
* 1.其实就是一个内部类的简写格式
* 2.定义匿名内部类的前提
* 内部类必须是继承一个类或者实现接口
* 3.匿名内部类的格式
* new 父类或者接口(){定义子类的内容}.成员
*
* 4.其实匿名内部类就是一个匿名子类对象.而且这个对象有点胖.
* 5.匿名内部类中定义方法 最好不要超过3个.
*
*/
abstract class AbsDemo{
abstract void show();
}

class Outer{
int x=3;

class Inner extends AbsDemo{
void show(){
System.out.println("show"+Outer.this.x);
}
}

public void function(){ //不采用匿名内部类
new Inner().show();
}

//采用 匿名内部类实现
public void function1(){

//这就是匿名内部类
new AbsDemo() { //如果只用一次
@Override
void show() { //需要先实现 抽象类中的方法
System.out.println("show"+Outer.this.x);
}
}.show();

new AbsDemo() { //如果只用一次
@Override
void show() { //需要先实现 抽象类中的方法
System.out.println("show"+Outer.this.x);
}
void method(){ //子类特有的
System.out.println("method:"+Outer.this.x);
}
}.method();
//发现 要进行多方法调用的时候 每次都要创建一个对象

}
}

public class AnonymousInner {
public static void main(String[] args) {
new Outer().function();
}
}

/***
* 题目 补足代码 采用匿名内部类完成
*/

interface Inter{
void method();
}

class Test{
//补足代码 采用匿名内部类完成
static Inter function(){
return new Inter(){
public void method(){
System.out.println("method show run");
}
};
}
}

class AnonymousInnerTest{

public static void main(String[] args){
//根据这句话 在上面补足代码
Test.function().method();
//Test.function(): Test类中有一个静态方法 function
//.method():function运算后返回的结果对象是 一个Inter对象,因为只有 Inter采用metho方法
}
}
/**
* 面试题:如果没有接口 没有 父类 请写一个 匿名抽象类调用一个方法
*/
class InnerTest{
public static void main(String [] args){
new Object(){
public void function(){
System.out.println("function run");
}
}.function();
}
}
内容概要:本文档主要介绍了Intel Edge Peak (EP) 解决方案,涵盖从零到边缘高峰的软件配置和服务管理。EP解决方案旨在简化客户的入门门槛,提供一系列工具和服务,包括Edge Software Provisioner (ESP),用于构建和缓存操作系统镜像和软件栈;Device Management System (DMS),用于远程集群或本地集群管理;以及Autonomous Clustering for the Edge (ACE),用于自动化边缘集群的创建和管理。文档详细描述了从软件发布、设备制造、运输、安装到最终设备激活的全过程,并强调了在不同应用场景(如公共设施、工业厂房、海上油井和移动医院)下的具体部署步骤和技术细节。此外,文档还探讨了安全设备注册(FDO)、集群管理、密钥轮换和备份等关键操作。 适合人群:具备一定IT基础设施和边缘计算基础知识的技术人员,特别是负责边缘设备部署和管理的系统集成商和运维人员。 使用场景及目标:①帮助系统集成商和客户简化边缘设备的初始配置和后续管理;②确保设备在不同网络环境下的安全启动和注册;③支持大规模边缘设备的自动化集群管理和应用程序编排;④提供详细的密钥管理和集群维护指南,确保系统的长期稳定运行。 其他说明:本文档是详细描述了Edge Peak技术及其应用案例。文档不仅提供了技术实现的指导,还涵盖了策略配置、安全性和扩展性的考虑,帮助用户全面理解和实施Intel的边缘计算解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值