什么是实例内部类 Instance inner class有什么语法?
1.Instance inner class定义,用途和用法
重要语法:马克-to-win:1)实例内部类一定得有个外层类的实例和它绑定在一起,所以可以用This指针。所以必须先实例化外层类之后才能再实例化内部类。(生活中的例子就是子宫和胚胎(不算试管婴儿!))2)语法规定:实例内部类不能有静态的属性或方法,为什么?因为没有外层类的实例就不应该有实例内部类的任何东西存在,包括内部类的静态属性,但静态属性应该在main方法执行时创建,这样就会产生矛盾,所以规定实例内部类不能有静态的属性或方法。马克-to-win:2)既然每个内部类实例都可以改变他们共同的外层类的静态属性或实例属性,他们成为内部类实例们可以交互的地方。(下例中的shell_x,在不断增长。)
例2.1a:类中有个内部类属性。
class ShellMark_to_win {
int shell_x = 100;//既然每个内部类实例都可以改变这里的外层类静态属性或实例属性,马克-to-win:这里成为内部类实例们可以交互的地方
static int n;
Core core;
void visitCore() {
core = new Core();
core.y=8;
core.display();
}
// 下面是个实例内部类,必须有个外层类实例,才能有这个内部类实例。所以就有了this这个概念。
class Core {
/* 下一句错误,根据语法:马克-to-win:静态的域或方法只能出现在静态类或最外层类上。The field m cannot be declared static; static fields can only be declared in static inner class or top level classes,*/
// static int m=9;
int y = 10; // y is local to core
void display() {
shell_x=shell_x+20;
n=n+1;//轻松访问外层类的静态变量
System.out.println("n is "+n+" display: shell_x and y " + shell_x + " "+ShellMark_to_win.this.shell_x+ " " + y+ " "+this.y);
}
}
Core newC()
{
return new Core();
}
void showy() {
// y=9; // 错误,马克-to-win:外层类不能直接访问内部类的属性。error,y not known here! System.out.println(y);
}
}
public class Test {
public static void main(String args[]) {
ShellMark_to_win shell = new ShellMark_to_win();
shell.visitCore();
ShellMark_to_win.Core sc=shell.new Core();//内部类实例是存在于外部对象里的。
sc.display();
ShellMark_to_win.Core sc1=shell.newC();
sc1.display();
/* 不能像下面这样写, 因为Core 是内部类。 can not resolve Core class ,because Core class are defiened as ShellMark_to_win's inner class. */
//Core core = new Core();
}
}
例2.1:---
class ShellMark_to_win {
int shell_x = 100;//既然每个内部类实例都可以改变这里的外层类静态属性或实例属性,马克-to-win:这里成为内部类实例们可以交互的地方
static int n;
void visitCore() {
Core core = new Core();
core.y=8;
core.display();
}
// 下面是个实例内部类,必须有个外层类实例,才能有这个内部类实例。所以就有了this这个概念。
class Core {
/* 下一句错误,根据语法:马克-to-win:静态的域或方法只能出现在静态类或最外层类上。The field m cannot be declared static; static fields can only be declared in static inner class or top level classes,*/
// static int m=9;
int y = 10; // y is local to core
void display() {
shell_x=shell_x+20;
n=n+1;//轻松访问外层类的静态变量
System.out.println("n is "+n+" display: shell_x and y " + shell_x + " "+ShellMark_to_win.this.shell_x+ " " + y+ " "+this.y);
}
}
Core newC()
{
return new Core();
}
void showy() {
// y=9; // 错误,马克-to-win:外层类不能直接访问内部类的属性。error,y not known here! System.out.println(y);
}
}
public class Test {
public static void main(String args[]) {
更多内容请见原文,文章转载自:https://blog.csdn.net/qq_44639795/article/details/103110350
什么是实例内部类 Instance inner class有什么语法?的更多相关文章
- OC 实例变量(instance var)与属性(@property)的关系 isa指针
实例变量(instance var)与属性(@property)的关系 Objective-C 2.0之后,声明一个@property name自动产生一个实例变量,名为_name,因此省去实例变量和 ...
- React实例入门教程(1)基础API,JSX语法--hello world
前 言 毫无疑问,react是目前最最热门的框架(没有之一),了解并学习使用React,可以说是现在每个前端工程师都需要的. 在前端领域,一个框架为何会如此之火爆,无外乎两个原因:性能优秀,开发 ...
- 【原创】React实例入门教程(1)基础API,JSX语法--hello world
前 言 毫无疑问,react是目前最最热门的框架(没有之一),了解并学习使用React,可以说是现在每个前端工程师都需要的. 在前端领域,一个框架为何会如此之火爆,无外乎两个原因:性能优秀,开发效率 ...
- Linux/Unix shell 监控Oracle实例(monitor instance)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...
- C#代码实现,确保windows程序只有一个实例(instance)
static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static vo ...
- 获取当前应用程序实例(instance:HINSTANCE)(转)
if using MFC AfxGetInstanceHandle(). For console programs, call GetConsoleWindow() to get the HWND t ...
- (转)实例简述Spring AOP之间对AspectJ语法的支持(转)
Spring的AOP可以通过对@AspectJ注解的支持和在XML中配置来实现,本文通过实例简述如何在Spring中使用AspectJ.一:使用AspectJ注解:1,启用对AspectJ的支持:通过 ...
- 居然有这种操作?各路公司面试题(作者:马克-to-win)
我喜欢考试,不考试,谁知道哪些掌握了哪些没有?? 面试什么的最有爱了(变态笑)~~~ http://www.mark-to-win.com/JavaBeginner/JavaBeginner4_web ...
- OC 实例变量(Instance Var)和成员变量(member var)区别
摘要: Objective-C 引入了“实例变量"的概念,但同时, 也经常出现 “成员变量”的声音. 到底什么是实例变量,什么是成员变量,二者的区别是什么呢? 今天查看apple 的官方 ...
随机推荐
- 矩池云上如何修改cudnn版本
修改与之前修改nvcc.cuda这些的原理是一样的. 国内镜像 https://mirrors.cloud.tencent.com/nvidia-machine-learning/ 检查系统版本 so ...
- 阿里云CND加速
1: :2: 3: 4: 5: 6: 7:将解析信息如实添加 8:如果报错添加 CNAME 记录提示和 A 记录冲突,也就是说如果你要添加 CDN 全站加速,域名解析那里就不能再有 A 记录了, 只有 ...
- rsyn的使用
以下是rsync的语法: Local: rsync [OPTION...] SRC... [DEST] Access via remote shell: Pull: rsync [OPTION...] ...
- PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
摘要 点云是一种重要的几何数据结构类型.由于其不规则的格式,大多数研究人员将此类数据转化为常规的三维体素网格或图像集合.然而,这使数据变得不必要的庞大,并导致问题.在本文中,我们设计了一种新型的直接处 ...
- WPF关于绑定与更新修改
看到一些资料与教程视频,在这里记录一下, 首先 我们先做好一个公共的INotifyPropertyChanged事件,也就是通知更新 public class ViewModelBase : INot ...
- boxcox1p归一化+pipeline+StackingCVRegressor
找到最好的那个参数lmbda. from mlxtend.regressor import StackingCVRegressor from sklearn.datasets import load_ ...
- MySQL between and 边界测试
看到有一些博客说 between and 有不含边界的情况,于是测试了一把,记录如下.先说结论:between and 不存在不含边界的情况 1. between and 是包含边界的 id betw ...
- dotnet 委托的实现解析
缘起 最近被问到什么是.Net中的委托.问题虽然简单却无从回答.只能说委托是托管世界的函数指针,这么说没啥大毛病,但也都是毛病(当时自己也知道这么说不太对,不过自己不太爱用这个也没准备确实没有更好的答 ...
- Java基础——类与接口
一.类与接口的关系 1.类与类的关系 继承关系,只能单继承,不能多继承:但是可以多层继承 2.类与接口的关系 实现关系,可以单实现,也可以多实现,还可以继承一个类的同时实现多个接口 3.接口与接口的关 ...
- 5分钟了解Redis的内部实现跳跃表(skiplist)
跳跃表简介 跳跃表(skiplist)是一个有序的数据结构,它通过在每个节点维护不同层次指向后续节点的指针,以达到快速访问指定节点的目的.跳跃表在查找指定节点时,平均时间复杂度为,最坏时间复杂度为O( ...