java中,剩下的这两个内部类不太好理解!
【摘要】 大家好,我是雄雄,今天我们接着昨天的分享,将剩余的两个内部类(方法内部类和匿名内部类)结束掉,这两个内部类都不太好理解。昨天的推文:java中常见的几种内部类,你会几个?(未完)书接上文,昨天我们说到了java中的内部类有四种,分别是:静态内部类、成员内部类、方法内部类、匿名内部类,其中前面两种(静态内部类和成员内部类)我们在昨天已经讲过,现在我们来看看后两种。方法内部类顾名思义,一看名字就...
大家好,我是雄雄,今天我们接着昨天的分享,将剩余的两个内部类(方法内部类和匿名内部类)结束掉,这两个内部类都不太好理解。
昨天的推文:java中常见的几种内部类,你会几个?(未完)
书接上文,昨天我们说到了java中的内部类有四种,分别是:静态内部类、成员内部类、方法内部类、匿名内部类,其中前面两种(静态内部类和成员内部类)我们在昨天已经讲过,现在我们来看看后两种。
方法内部类
顾名思义,一看名字就知道意思系列,方法内部类即在方法的内部声明一个类,代码如下:
//外部类
public class People {
private String name ;
//方法
public People show(){
//内部类
class Man extends People{
//内部类中的方法
public void getMan(){
System.out.println("名称是:"+name);
System.out.println("执行内部类的方法");
}
}
//创建内部类的对象
Man man = new Man();
//调用内部类的方法
man.getMan();
return new Man();
}
//main方法
public static void main(String[] args) {
People people = new People();
people.name = "雄雄的小课堂";
people.show();
}
}
代码分析:
有一外部类People,然后在里面有一属性name,还有一方法show();接着在show()方法内部创建了一个名为Man的内部类,这里都好说,不好说的是后面调用的时候可能有的伙伴们一下子想不起来;
我们只需要在外部类的这个方法(show())里面实例化内部类,通过该对象名即可调用内部类中的方法。
//方法
public People show(){
//内部类
class Man extends People{
//内部类中的方法
public void getMan(){
System.out.println("名称是:"+name);
System.out.println("执行内部类的方法");
}
}
//创建内部类的对象
Man man = new Man();
//调用内部类的方法
man.getMan();
return new Man();
}
注意,方法内部类相当于方法里面的一个局部变量一样,不能有public 、private、 static 类的关键词修饰。一般这种方法用的很少。
匿名内部类
匿名内部类和前面介绍的内部类不同,匿名内部类没有单独定义类而是通过new后面是父类或者接口时创建的,代码如下:
People接口:
//外部接口
public interface People {
//吃饭
public void eat();
}
Man类:
public class Man{
public static void show(){
//匿名类
People p = new People() {
@Override
public void eat() {
System.out.println("正在吃饭……");
}
};
p.eat();
}
public static void main(String[] args) {
Man man = new Man();
man.show();
}
}
运行结果如图所示:
编辑
总结:匿名内部类是没有名字的,所以只能使用一次,他是用来简化代码的,使用的时候,必须继承一个父类或者实现一个接口。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)