内部类的规则

内部类:
 将一个类定义在另一个类里面,对里面的哪个类就称为内部类

访问特点:
 内部类可以直接访问外部类成员,包括私有成员
 之所以可以直接访问外部类中的成员,是因为内部类中持有
 一个外部类的引用 外部类.this.变量名
 而外部类要访问内部类成员必须要建立内部类的对象。

内部类可以被private 修饰 外部类不能。内部类是外部类成员。

格式
 1当内部类定义在外部类的成员位置上,而非私有,可以在外部其他类 
 中直接建立内部类对象
面试: 外部类.内部类 变量名=new 外部类().内部类()
 2当内部类在成员位置上,就可以被成员修饰符修饰 比如private
 将内部类在外部类中进行封装
  static 内部类就具备了static特性:
 当内部类被静态修饰后,只能直接访问外部类中的static成员。
 出现访问局限

在外部其他类中,如何直接访问静态内部类的非静态成员呢?
外部类.内部类 变量名=new 外部类().内部类().内部类方法();

在外部其他类中,如何直接访问静态内部类的静态成员呢?
外部类.内部类.内部静态方法();  静态能直接通过类名调用。

注意:当内部类中定义了静态成员,该内部类必须是静态的。
 当外部类中的静态方法  访问内部类时,内部类也必须是静态的。

定义原则:
 当描述事物时 事物的内部还有事物,该事物用内部类来描述
 因为内部事物在使用外部事物中的内容。
 
 1内部类定义在局部时 不可以被成员修饰符修饰
 2可以直接访问外部类中的成员,因为还持有外部类中的引用
  但是不可以访问它所在的局部变量,只能访问被final修饰的
  局部变量。

匿名内部类:
 1匿名内部类其实就是内部类的简写格式。
 2定义匿名内部类的前提:
   内部类必须继承一个类或者实现一个接口。
 3格式: new 父类或者接口(){定义子类的内容}.函数;
  函数就是 定义的子类类容。只能接一个函数。
  匿名对象只能调用一次。
 4 其实匿名内部类就是一个匿名子类对象。
   而且着个对象有点胖,可以理解为带内容的对象。
 5 匿名内部类中定义的方法最好不要超过3个。

如果 父类 变量名=new 父类或者接口(){定义子类的内容}
只能 变量名.函数()  着函数只能是父类的函数。
子类没名字 所以不能进行强制转换。
父类如果抽象abstract 如果多 不能使用。 abstract子类必须全部复写。

时间: 2024-12-14 16:31:22

内部类的规则的相关文章

JAVA之旅(九)——Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类

JAVA之旅(九)--Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类 天天被一些琐事骚扰,学习还得继续 一.Object类 Object是什么呢?我们可以翻阅JAVA API文档看他的介绍 上面介绍说,object是类层次结构的根类,也就是超类 Object:是所有对象的直接后者间继承关系,传说中的老祖宗,你父亲还有父亲,你父亲的父亲还有父亲是爷爷,这是继承关系,但是你的祖宗却只有一位,该类中定义的肯定是所有对象都具备的功能

Java中内部类

内部类的规则: 1.内部类可以直接访问外部类中的成员,包括私有. 之所以可以直接访问外部类中的成员,是因为内部类中持有一个外部类的引用,格式:外部类名.this 2.外部类要访问内部类,必须建立内部类对象 访问格式: 1.当内部类定义在外部类的成员位置了,而且非私有,可以在外部其他类中. 可以直接建立内部类对象. 格式: 外部类类名.内部类名  变量名= new 外部类对象.new 内部类对象. Outer.inner out = new Outer().new inner(); 2.当内部类在

JAVA 9 (内部类,异常,包)

内部类: 将一个类定义在另一个类里面,称里面那个类为内部类. 举例: class Zx { public static void main(String []arr) { Outer  o = new Outer(); o.method(); } } class Outer { class Inner //内部类,可以定义多个内部类 { void function() { System.out.println("inner:"+x); } } int x=3; void method(

java基础知识6

1.构造方法能继承吗?构造方法能重载吗?构造方法不能继承,但是子类要调用父类的构造方法产生父类对象,可以被子类重载: 2.final.finally.finalize的区别是什么?final可修饰方法,变量,类.修饰类表示该类不能被继承,修饰方法表示该方法不能被重写,修饰变量表示该变量的值不能被改变.finally表示无论是否有异常,都会执行的代码块,一般用于流的关闭,数据库的关闭等资源清理工作:finalize()该方法在Object中定义,表示虚拟机在垃圾回收该对象之前做一些清理操作: 3.

Java编程思想读书笔记

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4290955.html 第一章对象导论... 1 第二章一切都是对象... 4 第三章操作符... 10 第四章流程控制... 12 第五章初始化与清理... 14 第六章访问权限控制... 15 第七章复用... 23 第八章多态... 2

Java 学习 day09

01-面向对象(内部类访问规则) 02-面向对象(静态内部类) 03-面向对象(内部类定义原则) 04-面向对象(匿名内部类) 05-面向对象(异常概述) 06-面向对象(异常try-catch) 07-面向对象(异常声明throws) 08-面向对象(多异常处理) 09-面向对象(自定义异常) 10-面向对象(throw和throws的区别) 11-面向对象(RuntimeException) 12-面向对象(异常练习)

Java基础知识_毕向东_Java基础视频教程笔记(5-10)

06天-05-面向对象(帮助文档的制作javadoc):java文档生成命令:javadoc -d filepatn demo.java   -author -version(可选)一个类中默认会有一个空参数的构造函数,这个默认的构造函数的权限和所属类一致默认构造函数的权限是随着的类的变化而变化的. 06天-06-面向对象(静态代码块):静态代码块的特点:随着类的加载而加载,只执行一次,用于给类的初始化.非静态代码块的特点:随着类的实例建立而分配内存空间初始化.构造代码块的特点:随着类的实例而初

JAVA之旅

JAVA之旅合集 JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 JAVA之旅(二)——if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结 JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造

IT十八掌掌六天课程总结

今天学完IT十八掌第六天java基础课程: 学习内容: 1,接口与抽象类: interface ---------------------------------------------- 1,所有方法都是抽象的 2,属性有public static final修饰,这是默认的,也就是说接口属性是静态常量. 3,接口之间可以多重继承, 4,接口之间是继承关系 5,类和接口之间是实现关系. 6,面向接口编程降低耦合度 抽象类 ------------------------------------