《JAVA基础(Java内部类应用实践).docx》由会员分享,可在线阅读,更多相关《JAVA基础(Java内部类应用实践).docx(7页珍藏版)》请在金锄头文库上搜索。
1、 JAVA基础(Java内部类应用实践)使用Container来命名inner class外部的class,以区分该Java文件以外的class,感觉这样更贴切。package com.sss.exam.inner;public class Container1 private class PrivateParams/私有是针对外部其他类的访问是私有的。即外部的其他类不能访问public int id ;public String name;public class PublicParamspublic int id ;public String name;/*Examda提示: 本方法可以访
2、问私有内部类* */public void testParams()PrivateParams params = new PrivateParams();params.id = 1;params.name = “sss“;/* param args*/public static void main(String args) Container1 out = new Container1();/Container1可以访问public内部类和private内部类PublicParams pp = out.new PublicParams();pp.id = 2;pp.name = “sss2“;
3、PrivateParams params = out.new PrivateParams();params.id = 3;pp.name = “sss3“;其他类访问:public class JustTest public static void main(String args) Container1 out = new Container1();/Container1可以访问public内部类和private内部类PublicParams pp = out.new PublicParams();/compile error .不能访问私有内部类PrivateParams params =
4、 out.new PrivateParams();其次种和第三种应用,考试大认为差异不大,可以理解为一种状况,不过是解决不同的问题罢了。package com.sss.exam.inner;* 同一个类里面定义非public的类,不能加final abstract 之外的modifier* 其modifier 值为0,不在Modifier的定义里面。有人称之为friendly修饰符*这里的User跟单独写一个User类的区分仅仅在于modifier.编译出来的class都是单独存在的。*/class Userint id;String name;public class Container2
5、private User user = null;/一个对象是可以这样的,解决了try catch的问题。/但是假如是一个String,则不行,问题就在Java的传值和传引用的问题。String相当于就是传值的。/* param args*/public static void main(String args) /*背景:catch和finally都一样,只是try局部不同* 传统方法:每次都需要写try,catch,finally*/*String user = null;tryuser = “fbysss“;catch(Exception e)user = “error.“;finall
6、yuser += “”s work finished.“;*/Container2A c2a = new Container2A();c2a.newMethod();/使用了内部类的调用方法:public void newMethod()Container2Common c2c = new Container2Common();c2c.execute(new BaseMyMethod()public User doMyMethod()/必需要有返回值,否则通用处理方法得不到user/error.无法访问user变量,必需声明为成员变量,user = “fbysss“;user = new Us
7、er();user.name = “fbysss“;System.out.println(user.name);return user;);System.out.println(“old user is:“+user.name);公共处理类:public class Container2Common public void execute(MyMethod mm)User user = null;try/通用接口方法,但是详细代码不一样user = mm.doMyMethod();catch(Exception e)user.name = “error.“;finallyuser.name += “”s work finished.“;System.out.println(user.name);共性方法接口:public interface MyMethod public User doMyMethod();共性stub类,目的是能够实例化,由于接口是不能实例化的。public class BaseMyMethod implements MyMethod public User doMyMethod() / TODO Auto-generated method stubreturn null;