Java基础(三)——内部类】的更多相关文章

1.   在Java程序语言中,接口是对类的一种描述.例如Arrays类中sort方法声明可以对对象进行排序,但前提是对象所属的类必须实现Comparable接口. public interface Comparable<T> { int compareTo(T other); } public interface Comparable{ int compareTo(Object obj); }   接口中的所有方法自动地属于public,不必提供关键字.接口可以定义常量,但不能有自己的实例域…
Java中的内部类共分为四种: 静态内部类static inner class (also called nested class) 成员内部类member inner class 局部内部类local inner class 匿名内部类anonymous inner class 静态内部类Static Inner Class 最简单的内部类形式. 类定义时加上static关键字. 不能和外部类有相同的名字. 被编译成一个完全独立的.class文件,名称为OuterClass$InnerClas…
参考文档: 内部类的应用场景 http://blog.csdn.net/hivon/article/details/606312 http://wwty.iteye.com/blog/338628 定义: java允许在一个类中定义另外一个类,这就叫类嵌套.类嵌套分为两种,静态的称为静态嵌套类,非静态的又称为内部类 ps:lz一直以为内部类有四种,包括静态内部类.其实是错误的.内部类只有三种,均是非静态的 使用嵌套类的优点: 能够将仅在一个地方使用的类合理地组合.如果一个类可能只对于另外一个类有…
java中的内部类总结 内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液.跳动) 显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类 而心脏又在人体当中,正如同是内部类在外部内当中 实例1:内部类的基本结构(常规内部类) //外部类 class Out { private int age = 12; //内部类 class In { public vo…
内部类简单来说就是把一个类的定义放到另一个类的定义内部 内部类分为:成员内部类.局部内部类.匿名内部类.静态内部类 成员内部类:最常见的内部类 public class Outter { private int i = 0; public static String name = "sam"; public Outter(int i) { this.i = i; } class Inner{ public Inner() { System.out.println("Inner…
单例模式指的是一个类只有一个对象,通过一些措施达到达到这个目的.但是反射和反序列化可以获得多个不同的对象. 先简单的认识一下单例模式 一:单例模式 通过私有构造器,声明一个该类的静态对象成员,提供一个获得对象的静态方法实现单例模式.单列模式有饿汉式和懒汉式,饿汉式是声明的同时就为该对象赋值. 懒汉式指的是使用到的时候再创建.虚拟机的实现会保证:类加载会确保类和对象的初始化方法在多线程场景下能够正确的同步加锁,即饿汉式声明并赋值是原子操作,不会存在同步问题.懒汉式为了应付同步问题出现了加锁,内部类…
引言   从JDK1.5起,增加了加强型的for循环语法,也被称为 "for-Each 循环".加强型循环在操作数组与集合方面增加了很大的方便性.那么,加强型for循环是怎么解析的呢?同时,这是不是意味着基本for循环就会被取代呢? 语法: for(var item:items){//var 代表各钟类型 //相关操作 } 一.数组中的 for-Each 循环 我们先来看一下数组中的 for-Each 循环的使用: String str[]= new String[]{"1&…
1.JAVA 语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try 块中可以抛出异常吗? 答:Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口.在Java 中,每个异常都是一个对象,它是Throwable 类或其它子类的实例.当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理.Java 的异常处理是通过5 个关键词来实现的:try.ca…
一.什么是内部类? 内部类(inner class)是定义在另一个类中的类 为什么使用内部类? 1)内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据 2)内部类可以对同一个包中的其他类隐藏起来 3)当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷 二.内部类有几种? 内部类分为:成员内部类.局部内部类.静态内部类.匿名内部类 2.1.成员内部类 成员内部类是最普通的内部类,我们先从它开始说起: package com.my.po; /** * description…
/*内部类是一个编译时的概念,*/ 常规内部类.静态内部类.局部内部类.匿名内部类 1.常规内部类(常规内部类没有static修饰且定义在外部类类体中) 1.常规内部类中的方法可以直接使用外部类的实例对象和实例方法 2.在常规内部类中可以直接用内部类创建对象 2.静态内部类(与类的其他成员相似,可以用static修饰内部类,这样的类称为静态内部类.) 1.静态内部类与静态内部方法相似,只能访问外部类的static成员,不能直接访问外部类的实例变量,与实例方法,只有通过对象引用才能访问 2.由于s…
内部类lambda重点摘要 内部类特点: 内部类可以直接访问外部类,包括私有 外部类访问内部类必须创建对象 创建内部对象格式: 外部类.内部类 对象名=new外部类().new内部类(); 静态内部类访问: 外部类.内部类.方法名 局部内部类: 局部内部类在方法中定义的类,外届无法直接使用,需要在方法内部创建对象并使用,该类可以直接访问外部类成员,也可以访问方法类的局部变量 私有成员内部类访问需在自己外部类中创建对象 匿名内部类: 前提: 需要一个类或者接口 格式: new 类名/接口名(){重…
1.枚举类,使用enum定义的枚举类默认继承java.lang.Enum,而不是Object类.枚举类的所有实例必须在枚举类中显示列出,否则这个枚举类永远都不能产生实例.相关内容较多,需要后续继续跟进.枚举类里定义抽象方法时无需显示使用abstract关键字将枚举类定义成抽象类,但因为枚举类需要显示创建枚举值,而不是作为父类,所以定义每个枚举类时必须为抽象方法提供实现. 2.java垃圾回收只会回收heap当中的对象,不会回收任何物理资源.垃圾回收机制回收任何对象之前,只会先调用finalize…
摘要:Java新人初学时自己的一些理解,大神们路过勿喷,有什么说的不对不足的地方希望能给予指点指点,如果觉得可以的话,希望可以点一个赞,嘿嘿,在这里先谢了.在这里我主要说的是初学时用到的Java三个循环体的用法及区别:for  while和do while在什么时候会使程序代码更方便简洁: 一.for循环体,这个在我以后写程序代码都是比较长用的一个循环体之一,for循环主要多数用到我们已经知道循环次数的循环程序中. 表达式:for(初始化:布尔表达式:更新){ 程序代码....... } for…
今天来复习下内部类的一些基础知识. 首先是内部类的分类: 1.成员内部类 2.静态内部类 3.匿名内部类 4.局部内部类 下面逐一来介绍下. 首先是成员内部类,就是将内部类作为一个成员变量来处理.具体例子如下: public class ChengYuanInnerClass { private int num=3; class InnerClass{ private int num=4; public void test(){ int num =5; System.out.println("t…
1 运算符 1.1  比较运算符 比较运算符的结果都是boolean类型,也即是要么是true,要么是false. 比较运算符"=="不能写成"=". > package java003; /** * 2017/8/31. * 说明: */ public class OperateDemo { public static void main(String[] args) { int a = 3; int b = 7; System.out.print(a>…
今天来谈谈final关键字的作用, 虽然有很多博文关于final进行了很深的研究,但还是要去记录下谈谈自己的见解加深下印象.下面直接进入主题: 一.final关键字的作用 1.被final修饰的类不能被继承. 这一点应该很多人都知道也遇到过,经典案例就是java.lang.String类 还有一些常见的类也是被final所修饰的,如下: 基本类型对应的包装类型(如java.lang.Integer.java.lang.Long等).字符相关类(java.lang.StringBuilder.ja…
面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承是为了重用父类代码.两个类若存在IS-A的关系就可以使用继承.同时继承也为实现多态做了铺垫.那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开. 多态 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量…
1.成员内部类(声明在类内部&&方法之外) class Person{ String name = "韩梅梅"; int age; class Bird{ String name = "黄鹂"; int id; void setName(String name){ System.out.println(name);//方法传入的name-杜鹃 System.out.println(this.name);//Bird对象的name-黄鹂 System.…
1.引用类型变量的创建及使用2.流程控制语句之选择语句3.流程控制语句之循环语句4.循环高级 ###01创建引用类型变量公式 * A: 创建引用类型变量公式 * a: 我们要学的Scanner类是属于引用数据类型,我们先了解下引用数据类型. * b: 引用数据类型的定义格式 * 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. * 数据类型 变量名 = new 数据类型(); * c: 引用数据类型的使用 * 每种引用数据类型都有其功能,我们可以调用该类型实例…
一.java的一些概念: JRE(java  runtime environment):java程序运行环境,如果要运行java程序,需要jre支持.jre里包含jvm JDK(java  development Kit):java开发工具,包含java的所有开发工具,比如:javac.java等.JDK里包含jre. java虚拟机简称JVM:,他是运行java程序的虚拟机.好比游戏的模拟器.JVM是java语言的运行环境也是java最具有吸引力的特性之一.JVM 读取并处理编译过于平台无关的…
final通常是指"不可改变的",例如我们使用的常量 通常可以有三种使用情况: 一.final修饰数据 如果final修饰数据,也就是通常所说的常量,从字面上看,常量就是不能修改的,和变量是一个对立面 1.定义的时候必须有初始值,否则会编译错误 原因: public int i = 123; 在类加载的准备阶段i的值为0,而不是123.赋值123的过程是在初始化阶段 但是如果i被final修饰,编译器会生成Constantvalue属性,在准备阶段会根据Constantvalue的设置…
String可以说是Java中使用最多最频繁.最特殊的类,因为同时也是字面常量,而字面常量包括基本类型.String类型.空类型. 一. String的使用 1. String的不可变性 /** * The {@code String} class represents character strings. All * string literals in Java programs, such as {@code "abc"}, are * implemented as instan…
非静态内部类不能拥有静态变量 为什么 下面这段代码,如果Lazyholder没有static修饰,则编译不过 class Singleton2 { private static class LazyHolder { private static Singleton2 singleton; } public Singleton2 getInstance() { return LazyHolder.singleton; } } "非静态内部类不能拥有静态变量" ,可以这样理解,因为JVM类…
内部类 内部类(inner class)是定义在另一个类中的类 内部类的好处: |--1.隐藏机制:内部类封装性更好,隐藏在一个类之中,同一包中的其他类也不能访问 |--2.内部类可以访问外围类的私有数据 成员内部类 member inner class 可以访问外部类的所有成员变量和方法(无论静态.非静态) 自身没有静态成员 |--外部类里面创建成员内部类的实例:this.new Innerclass(); |--在外部类之外创建内部类的实例:new Outerclass().new Inne…
通过repaint()方法进行重画. import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Graphics; public class Demo05{ public static void main(String[] args){ JFrame f = new JFrame();//创建一个窗体 f.setSize(500,500);//设计窗体大小 f.setLocationRelativeTo(null)…
From: http://www.itzhai.com/java-based-notebook-a-static-inner-class-within-a-class-member-within-the-class-of-local-inner-classes-anonymous-inner-classes.html 内部类: 使用内部类减少了命名冲突. 一个内部类可以定义在一个类中,一个方法中甚至一个表达式中.内部类分为四种:静态内部类(static inner classes)成员内部类(m…
内部类: 1.定义在一个类中的内部类,内部类的实例化伴随着外围类所定义的方法来构造,内部类对象有外围类的隐式引用,所以内部类可以直接访问外围类的外围类的域,包括私有的,这是内部类的访问特权,所以比常规类功能更加强大. 2.内部类可以对同一个包中的其他类隐藏起来,不过可以通过 OuterClass.InnerClass来引用public声明的内部类. 局部内部类: 1.内部类挪到方法内部,与内部类相比,局部内部类不仅可以访问定义他们的外部类,还可以并且仅可以访问声明为final的局部变量. 2.类…
内部类创建 从外部类的非静态方法之外(?=静态方法)的任意位置创建某个内部类的对象,要加入外部类的名字,OuterClassName.InnerClassName public class Parcel2 { class Contents { private int i = 11; public int value() { return i; } } class Destination { private String label; Destination(String whereTo) { l…
面向对象 现实定义: 购买手机 阐述描述配置尺寸啥的,要求能打电话,然后服务员给你拿出一款手机,你所阐述的就是类,服务员给你的就是对象 package com.xie public class Telephone{ //属性(成员变量) float screen; float cpu; //能干什么 void sendMessage{ } } 注释:new Telephone()会内存分配 创建对象 Telephone iphone = new Telephone() 使用对象/给对象的属性赋值…
变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不同类型的变量,可以在内存中储存整数.小数或者字符. Java 的两大数据类型: 内置数据类型 引用数据类型 内置数据类型 Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. byte: byte 数据类型是8位.有符号的,以二进制补码表示的整数: 最小值是 -128(-2…