Java的内部类及其创建方式

本文介绍了Java内部类的概念、创建方式及其与外部类的链接。内部类提供了访问外部类成员的权限,可以通过`.this`引用外部类,也可以通过`.new`创建内部类对象。这种特性使得内部类成为组织代码和实现特定功能的有效工具。
摘要由CSDN通过智能技术生成

内部类及其创建方式

引言

在定义类时,我们可以将一个类定义在另一个类的内部,此时这个类便被成为内部类。

内部类是一种非常有用的特性,因为它允许你吧一些逻辑相关的类组织在一起,并控制位于内部的类的可视性。然而必须要了解,内部类与组合是两种完全不同地方概念,这一点很重要。

在一开始,内部类看起来可能想hi是一种代码的隐藏机制,仅仅是用来将类的定义放置在其他的类的内部,但是,随着对于内部类的不断了解,我们会发现其远不止如此,它能够了解定义它的外部类,并能与之通信,利用内部类的种种特点,我们可以将代码变得更加优雅和清晰。

基本的内部类的创建方式

正如上面对于内部类的定义一样,当把一个类的定义置于另一个类的内部时,我们便完成了一个内部类的创建。

在下面,我们假设创建了一个披萨店的类,在其中定义了两个内部类,分别为奶酪披萨cheesePizza与香肠披萨sausagePizza。

package learning_java.InnerClassTest;

public class PizzaStore {
   
    class cheesePizza {
   
        private String name = "cheesePizza";
        public void getName() {
   System.out.println("Got a " + name);}
    }
    class sausagePizza {
   
        private String name = "sausagePizza";
        public void getName() {
   System.out.println("Got a " +name);}
    }
    // 只有在该外部类的非静态方法中,才可以这样直接创建内部类的对象
    public void orderPizza(String pizzaName) {
   
        if (pizzaName == "cheesePizza") {
   
            cheesePizza pizza = new cheesePizza();
            pizza.getName();
        }
        else if (pizzaName == "sausagePizza"){
   
            sausagePizza pizza = new sausagePizza();
            pizza.getName();
        }
        else
            System.out.println("Don't have this kind of pizza");
    }

    public static void main(String[] args) {
   
        PizzaStore store = new PizzaStore();
        store.orderPizza("cheesePizza");

    }
}

在定义了两个披萨的内部类之后,我们又定义了一个订披萨的方法orderPizza,在这个方法里,我们会根据所输入的需要来创建披萨的对象。而我们在这个方法里面使用内部类的时候,看起来似乎与普通类并没有什么不同,在这里,实际的区别只是内部类的定义时嵌套在PizzaStore类里面的,但是接下来我们会看到,这并不是唯一的区别。

public class PizzaStore2 {
   
    class cheesePizza {
   
        private String name = "cheesePizza";
        int size;
        cheesePizza(int inputSize){
   
            size 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值