java中含有许多类,不同的类有不同的用法,这里列举了一些实例。
普通类大家都容易理解,内部类主要起到代码隐藏机制,为了更好的组织代码结构。
内部类测出现给编程带来了很多困扰,在java编程思想中,对为什么出现内部类做了如下解释:
每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承某个(接口)实现,对内部类都没有影响。
内部类是的多重继承的解决方案变得完整,实现了“多重继承”。毕竟一个java类只能继承一个父类。
public class ClassDemo {
InnerClass innerClass = new InnerClass();
public void selfIntroduce(){
System.out.println("hello,我是:"+this.getClass().getName());
}
public void useInnerClass(){
innerClass.selfIntroduce();
InnerClass innerClass = new InnerClass();
innerClass.name="wowo";
innerClass.selfIntroduce();;
}
/**
* 方法中的局部类
*/
public void useMethodClass(){
class MethodClass implements HelloInnerClass{
@Override
public void selfIntroduction() {
System.out.println("我在方法里也可以创建哦,我的名字是:"+this.getClass().getName());
}
}
MethodClass methodClass = new MethodClass();
methodClass.selfIntroduction();
}
/**
* 定义一个接口
*/
interface HelloInnerClass{
void selfIntroduction();
};
public static void main(String[] args) {
SecondClass secondClass = new SecondClass();
secondClass.selfIntroduce();
//内部类不能new,会报错
//InnerClass innerClass = new InnerClass();
ClassDemo classDemo = new ClassDemo();
classDemo.useInnerClass();
//静态内部类,就可以在静态方法中直接new
StaticInnerClass staticInnerClass = new StaticInnerClass();
staticInnerClass.selfIntroduce();
ClassDemo.StaticInnerClass staticInnerClass1 = new ClassDemo.StaticInnerClass();
staticInnerClass1.selfIntroduce();
StaticInnerClass.selfIntroduce("静态方法自我介绍。");
//匿名内部类
HelloInnerClass trump = new HelloInnerClass() {
@Override
public void selfIntroduction() {
System.out.println("wowo,我是一个匿名内部类哦,我的名字叫川建国。");
}
};
trump.selfIntroduction();
//局部类
classDemo.useMethodClass();
}
/**
* 普通内部类
*/
class InnerClass{
public String name;
public void selfIntroduce(){
System.out.println("hello,InnerClass,我的名字是:" + this.getClass().getName()+",name:"+name);
}
}
/**
* 静态内部类
*/
static class StaticInnerClass{
public String name = "StaticInnerClass";
public void selfIntroduce(){
System.out.println("hello,StaticInnerClass,我的名字是:" + this.getClass().getName()+",name:"+name);
}
public static void selfIntroduce(String wowo){
System.out.println("hello,StaticInnerClass,我的名字是:"+wowo);
}
}
}
/**
* 同一个类文件中的其他类
* 使用起来和public类没什么区别
* 编译完之后是一个单独的class文件,与ClassDemo只差一个public
*/
class SecondClass{
public void selfIntroduce(){
System.out.println("hello,我是"+this.getClass().getName());
}
public static void main(String[] args) {
ClassDemo classDemo = new ClassDemo();
classDemo.selfIntroduce();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至2705686032@qq.com 举报,一经查实,本站将立刻删除。原文转载: 原文出处: