Java基础(10) - 内部类

存在意义
1、内部类可以很好的实现隐藏
一般的非内部类,是不允许有private与protected权限的,但内部类可以

2、内部类拥有外部类所有元素的访问权限 ,private修饰也能访问。

3、可实现多重继承 ,让多个内部类分别继承多个其他类,使外部类可以同时获取多个其他类的属性。

4、可以避免修改接口而实现同一个类中两种同名方法的调用。(外部类继承,让内部类实现接口)
参考:https://www.jianshu.com/p/f0fdea957792

静态、非静态内部类的区别
1、声明
静态内部类中可以声明静态成员变量和静态方法;非静态内部类不能。

2、访问
静态内部类只能访问外部类的静态成员变量和静态方法(静态内部类不持有外部类引用);非静态内部类可以访问外部类的所有成员和方法。

3、创建
声明静态内部类时,不依赖于外部类对象;声明非静态内部类时,依赖于外部类对象。
//假设类A有静态内部类B和非静态内部类C,创建B和C的区别为:?
A.B b=new A.B();?//静态内部类
A a=new A();?
A.C c=a.new C(); //非静态内部类

参考:https://www.cnblogs.com/insist-bin/p/11137675.html

原文地址:https://blog.51cto.com/4397014/2436227

时间: 2024-10-12 02:15:32

Java基础(10) - 内部类的相关文章

Java基础10 接口的继承与抽象类(转载)

接口继承 接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型.比如,我们以Cup作为原interface: interface Cup{    void addWater(int w);    void drinkWater(int w);} 我们在继承Cup的基础上,定义一个新的有刻度的杯子的接口,MetricCup 接口如下: interface MetricCup extends Cup{    int WaterContent

Java基础10:全面解读Java异常

Java基础10:全面解读Java异常 为什么要使用异常 首先我们可以明确一点就是异常的处理机制可以确保我们程序的健壮性,提高系统可用率.虽然我们不是特别喜欢看到它,但是我们不能不承认它的地位,作用. 在没有异常机制的时候我们是这样处理的:通过函数的返回值来判断是否发生了异常(这个返回值通常是已经约定好了的),调用该函数的程序负责检查并且分析返回值.虽然可以解决异常问题,但是这样做存在几个缺陷: 1. 容易混淆.如果约定返回值为-11111时表示出现异常,那么当程序最后的计算结果真的为-1111

Java基础(53):内部类(1)-----(转)

java中的内部类总结 内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液.跳动) 显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类 而心脏又在人体当中,正如同是内部类在外部内当中 实例1:内部类的基本结构(常规内部类) 1 //外部类 2 class Out { 3 private int age = 12; 4 5 //内部类 6 class In

java基础10:正则表达式与反射

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

java基础之 内部类

Java中的内部类共分为四种: 静态内部类static inner class (also called nested class) 成员内部类member inner class 局部内部类local inner class 匿名内部类anonymous inner class 静态内部类Static Inner Class 最简单的内部类形式. 类定义时加上static关键字. 不能和外部类有相同的名字. 被编译成一个完全独立的.class文件,名称为OuterClass$InnerClas

2.24 Java基础总结 ①内部类基础

内部类基础类里边再定义了类,可以是成员内部类,也可以是局部内部类(方法里边) 一.成员内部类①可以有访问修饰符②class文件名:外部类类名$内部类类名.class③就是一个完整的独立类④在本类任意非static的地方都可以new出来,但在第三方必用外部类对象.new的方式产生内部类Student s = outside.new Student():⑤静态内部类--特例在本类任意方法中可new出来,在第三方中药new出来,无需产生外部类对象,只需要用外部类类名. 的方法 二.局部内部类①不能有访

Java基础10 接口的继承与抽象类

链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2982240.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在实施接口中,我们利用interface语法,将interface从类定义中独立出来,构成一个主体.interface为类提供了接口规范. 在继承中,我们为了提高程序的可复用性,引入的继承机制.当时的继承是基于类的.interface接口同样可以继承

Java基础10:object类

Object类 这部分主要参考http://ihenu.iteye.com/blog/2233249 Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起.作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现. Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入.Object类没有定义属性,一共有13个方法,13个方法之中并不是所有方法都是子类可访问的,一共有9个方法

java基础10(多线程2)

线程的常用方法 public final void join()    线程加入 作用:等待该线程中止,其他线程才能继续抢着执行 public static void yield():  线程礼让 作用:暂停当前正在执行的线程对象,并执行其他线程.让线程间的执行更和谐一些,但是实际上做不到. public final void stop():线程死亡:直接杀死 public void interrupt():线程死亡:直接杀死,在死前,还可以有遗言(会执行后面的代码,然后死去). static