内部类
来源:互联网 发布:李洪成大宗易排盘软件 编辑:程序博客网 时间:2024/06/06 01:10
public class Show0 { /** * 把一个类定义在另一个类的内部,就是内部类。 * * */ private int id=123; private String name="hero"; public showInner0 createInner0(){ return new showInner0(); } class showInner0{ int stuId=id; String name="tom"; public void say(){ System.out.println(name); } } class showInner1{ } public static void main(String[] args) { //showInner1 inner1=new showInner1();这样报错 //如果要在外部类的非静态方法之外的地方创建内部类,就要用OuterClass.innerClass明确的写出它的类型 Show0 s=new Show0(); Show0.showInner0 inner0=s.createInner0(); inner0.say(); //内部类可以访问外部类的所以成员而不需要任何条件 }}
package com.hero.show; /** * 创建内部类对象,内部类引用外部类 * @author hero * */public class Show1 { public class Inner{ public Show1 outer(){ return Show1.this; //对外部类对象的引用,在编译期就被知晓,没有运行时的开销 } }} class hero1{ Show1 show1=new Show1(); Show1.Inner inner=show1.new Inner(); //创建对象的时候应该这样创建,必须使用外部类的对象来创建内部类对象 //在拥有外部类对象之前是不能创建内部类的,因为内部类对象会暗暗的连接到创建它的外部类对象上。但是,如果创建的是嵌套类即 //静态内部类,那么他就不需要对外部类对象的引用。 }
package com.hero.show;/** * 内部类与向上转型 * @author hero * 内部类向上转型成父类,尤其是转型成接口的时候 */public class Show2 { private class BMW implements Car{ //宝马实现了car } protected class OFO implements Bike{ //ofo实现了bike } public Car CarFactory(){ return new BMW();//隐藏细节,内部类是private //外部是以Car来调用对象,连这个对象是什么类都不知道 } public Bike BikeFactory(){ return new OFO();//隐藏细节 }}
package com.hero.show;/** * 在方法和作用域内的的内部类 * @author hero * */public class Show3 { //在方法里创建类 public Car CarFactory(){ class BMW implements Car{//这个类是方法的一部分,所以在这个方法之外是不可以访问他的 } return new BMW(); } //--------------------------------------------------- public Car test(){ if(true){ class BMW implements Car{//写在if语句的作用域内 } return new BMW(); } return null; }}
package com.hero.show;/** * 匿名内部类 * @author hero * */public class Show4 { public Car shopping(final String name){ return new Car() { private String love=name; //内部类如果要-直接-使用外部的对象,必须是final的 //如果外部的对象是传给父类的,不是直接使用的,可以不用final }; }}
package com.hero.show;import com.hero.show.Show5.hungry;/** * 嵌套类,如果不需要内部类和外部类有联系,将内部类声明为static * 普通的内部类对象隐式的保存了一个引用,指向创建他的外围类对象。 * 但是static就不是,嵌套类意味着: * 1.创建嵌套类对象,不需要外围类对象 * 2.不能从嵌套类的对象中访问非静态的外围类对象 * 普通的内部类不可以有static字段,也不能包含嵌套类,但是嵌套类可以有 * @author hero * */public class Show5 { public static class hungry{ }} class dinner{ hungry h=new hungry(); }
阅读全文
0 0
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- Qt无边框窗口,自由缩放窗口大小
- 实现计算器4则运算算法-中缀表达式转后缀表达式
- setContentView( )方法
- Android开发者2017年最值得关注的25个库
- 美好的一天,美好的心情,保持微笑,会有意想不到的人生!
- 内部类
- SecureCRT 8.0常用配置(背景色、字体等)教程
- SecureCRT的上传与下载教程
- java夯实基础-关键字
- Myeclipse修改servlet模板教程
- Myeclipse修改jsp、xml、properties等文件的默认打开方式教程
- DES 数据加密标准 结构详解
- oracle用户创建及权限设置
- Myeclipse相关设置(字体大小、显示行数)教程