iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JAVA内部类示例详解及练习
  • 797
分享到

JAVA内部类示例详解及练习

2024-04-02 19:04:59 797人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1 内部类概述2 特点3 练习 : 内部类入门案例4 成员内部类4.1 练习 : 被private修饰4.2 练习 : 被static修饰5 局部内部类6 匿名内部类1 内部类概

1 内部类概述

如果一个类存在的意义就是为指定的另一个类,可以把这个类放入另一个类的内部。
就是把类定义在类的内部的情况就可以形成内部类的形式。
A类中又定义了B类,B类就是内部类,B类可以当做A类的一个成员看待:

只为A类服务,可以看做是外部类的一个特殊成员

2 特点

1) 内部类可以直接访问外部类中的成员,包括私有成员

2) 外部类要访问内部类的成员,必须要建立内部类的对象

3) 在成员位置的内部类是成员内部类

4) 在局部位置的内部类是局部内部类

3 练习 : 内部类入门案例

创建包: cn.tedu.innerclass

创建类: TestInner1.java

package cn.tedu.innerclass;

public class TestInner1 {
    public static void main(String[] args) {
        //3.创建内部类对象,使用内部类的资源
        
        Outer.Inner oi = new Outer().new Inner();
        oi.delete();
        System.out.println(oi.sum);
        //4.调用外部类的方法--这样是创建了一个外部类的匿名对象,只使用一次
        new Outer().find();
    }
}
//1.创建外部类 Outer
class Outer{
    //1.1创建外部类的成员变量
    String name;
    private int age;
    //1.2创建外部类的成员方法
    public void find(){
        System.out.println("Outer...find()");
        //6.测试外部类如何使用内部类的资源
        //System.out.println(sum);--不能直接使用内部类的属性
        //delete();--不能直接调用内部类的方法
        
        Inner in = new Inner();
        System.out.println(in.sum);
        in.delete();
    }
    //2.创建内部类Inner--类的特殊成员
    
    class Inner{
        //2.1定义内部类的成员变量
        int sum = 10;
        //2.2定义内部类的成员方法
        public void delete(){
            System.out.println("Inner...delete()");
            //5.测试内部类是否可以使用外部类的资源
            
            System.out.println(name);
            System.out.println(age);
            
            //find();
        }
    }
}

4 成员内部类

4.1 练习 : 被private修饰

创建包: cn.tedu.innerclass

创建类: TestInner2.java

package cn.tedu.innerclass;

public class TestInner2 {
	public static void main(String[] args) {
		
		//4.创建内部类Inner2对象进行访问
		//Outer2.Inner2 oi = new Outer2().new Inner2();
		//oi.eat();
		
		//7.创建外部类对象,间接访问私有内部类资源
		new Outer2().getInner2Eat();
	}
}
//1.创建外部类Outer2
class Outer2{
	//6.提供外部类公共的方法,在方法内部创建Inner2内部类对象,调用内部类方法
	public void getInner2Eat() {
		Inner2 in = new Inner2();//外部类可以访问内部类的私有成员
		in.eat();
	}
	//2.1创建成员内部类Inner2
	
	//5.成员内部类,被private修饰私有化,无法被外界访问
	private class Inner2{
		//3.创建内部类的普通成员方法
		public void eat() {
			System.out.println("我是Inner2的eat()");
		}
	}
}

总结: 成员内部类被Private修饰以后,无法被外界直接创建创建对象使用 所以可以创建外部类对象,通过外部类对象间接访问内部类的资源

4.2 练习 : 被static修饰

创建包: cn.tedu.innerclass

创建类: TestInner3.java

package cn.tedu.innerclass;

public class TestInner3 {
	public static void main(String[] args) {
		
		//4.创建内部类对象访问show()
		//方式一:按照之前的方式,创建内部类对象调用show()
		//Outer3.Inner3 oi = new Outer3().new Inner3();
		//oi.show();
		//方式二:创建匿名内部类对象访问show()
		//new Outer3().new Inner3().show();
		
		//6.用static修饰内部类以后,上面的创建语句报错,注释掉
		//通过外部类的类名创建内部类对象
		Outer3.Inner3 oi = new Outer3.Inner3();
		oi.show();
		//7.匿名的内部类对象调用show()
		new Outer3.Inner3().show();
		//9.访问静态内部类中的静态资源--链式加载
		Outer3.Inner3.show2();
	}
}
//1.创建外部类Outer3
class Outer3{
	//2.创建成员内部类Inner3
	//5.内部类被static修饰—并不常用!浪费内存!
	static class Inner3{
		//3.定义成员内部类中普通的成员方法
		public void show() {
			System.out.println("我是Inner3类的show()");
		}
		//8.定义成员内部类的静态成员方法
		static public void show2() {
			System.out.println("我是Inner3的show2()");
		}
	}
}

总结: 静态资源访问时不需要创建对象,可以通过类名直接访问 访问静态类中的静态资源可以通过”. . . ”链式加载的方式访问

5 局部内部类

创建包: cn.tedu.innerclass

创建类: TestInner4.java

package cn.tedu.innerclass;

public class TestInner4 {
	public static void main(String[] args) {
		
		//5.创建外部类对象调用show()
		//7.当在外部类show()中创建局部内部类对象并且进行功能调用后,内部类的功能才能被调用
		new Outer4().show();
	}
}
//1.创建外部类Outer4
class Outer4{
	//2.创建外部类的成员方法
	public void show() {
		//3.创建局部内部类Inner4—不太常用!!!
		
		class Inner4{
			//4.创建局部内部类的普通属性与方法
			String name;
			int age;
			public void eat() {
				System.out.println("我是Inner4的eat()");
			}
		}
		
		//6.在show()里创建内部类对象
		Inner4 in = new Inner4();
		in.eat();
		System.out.println(in.name);
		System.out.println(in.age);
	}
}

6 匿名内部类

创建包: cn.tedu.innerclass

创建类: TestInner5.java

package cn.tedu.innerclass;

public class TestInner5 {
    public static void main(String[] args) {
        //传统方式:创建接口的实现类+实现类实现接口中的抽象方法+创建实现类对象+通过对象调用方法
        //3.创建接口一对应的匿名对象与匿名内部类,并调用实现了的方法save()
        new Inter1(){
            @Override
            public void save() {
                System.out.println("save()...");
            }
            @Override
            public void get() { }
        }.save();
        //5.创建抽象类对应的匿名对象与匿名内部类
        new Inter2(){
            @Override
            public void drink() {
                System.out.println("一人饮酒醉");
            }
        }.drink();
        //7.调用普通类的功能怎么调用?创建匿名对象直接调用
        new Inter3().powerUp();
        new Inter3().powerUp();//new了2次,所以是两个匿名对象
        
        Inter3 in = new Inter3();
        in.study();
        in.study();
        in.study();
        in.study();
        in.study();
        in.study();
    }
}
//1.创建接口
interface Inter1{
    //2.定义接口中的抽象方法
    void save();
    void get();
}
//4.创建抽象类
abstract class Inter2{
    public void play(){
        System.out.println("Inter2...play()");
    }
    abstract public void drink();
}
//6.创建普通类
class Inter3{
    public void study(){
        System.out.println("什么都阻挡不了我想学习赚钱的决心");
    }
    public void powerUp(){
        System.out.println("我们会越来越强的!");
    }
}

总结: 匿名内部类属于局部内部类,而且是没有名字的局部内部类,通常和匿名对象一起使用

以上就是JAVA内部类示例详解及练习的详细内容,更多关于Java内部类的资料请关注编程网其它相关文章!

--结束END--

本文标题: JAVA内部类示例详解及练习

本文链接: https://www.lsjlt.com/news/142444.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JAVA内部类示例详解及练习
    目录1 内部类概述2 特点3 练习 : 内部类入门案例4 成员内部类4.1 练习 : 被private修饰4.2 练习 : 被static修饰5 局部内部类6 匿名内部类1 内部类概...
    99+
    2024-04-02
  • Java中的静态内部类详解及代码示例
    1. 什么是静态内部类在Java中有静态代码块、静态变量、静态方法,当然也有静态类,但Java中的静态类只能是Java的内部类,也称为静态嵌套类。静态内部类的定义如下:public class OuterClass { static cl...
    99+
    2023-05-30
    java 静态内部类 ava
  • Java 基础之内部类详解及实例
     Java 基础之内部类详解及实例内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)显然,...
    99+
    2023-05-31
    java 内部类 ava
  • java内部类的定义与分类示例详解
    内部类 基本介绍 一个类的内部又完整的嵌套了另一个类结构。被嵌套的类称为内部类(inner class),嵌套其他类的类称为外部类(outer class)。是我们类的第五大成员,内...
    99+
    2024-04-02
  • Java基本语法之内部类示例详解
    目录1.内部类概念及分类2.实例内部类2.1实例内部类的创建2.2使用.this和.new2.3内部类实现迭代打印2.4内部类的继承3.静态内部类4.匿名内部类1.内部类概念及分类 ...
    99+
    2024-04-02
  • java 内部类的实例详解
    java 内部类的实例详解可以将一个类的定义放在另一个类的定义内部,这就是内部类。内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二)。第一次见面内部类我们从外面看是非常容易理解的,...
    99+
    2023-05-31
    java 内部类 ava
  • Java内部类示例分析
    这篇文章主要介绍“Java内部类示例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java内部类示例分析”文章能帮助大家解决问题。1.内部类概念及分类将一个类定义在另一个类的内部或者接口内部或者...
    99+
    2023-06-29
  • Java内部类详解(含:成员内部类、局部内部类、匿名内部类、静态内部类)
    内部类是什么? 字面意思,在类的内部编写的类就叫内部类!即一个类的内部又完整的嵌套了另一个类结构,被嵌套的类称为内部类(inner class),嵌套其他类的类称为外部类(outer class)。 内部类是类的第五大成员→【提示:类的五大...
    99+
    2023-10-26
    jvm
  • 详解Java匿名内部类
    匿名内部类: 先举个例子吧,给大家看一下什么是匿名内部类,Endeavor刚刚接触的时候,觉得哇哦,好奇怪的样子,这也太别扭了吧,不知道大家是什么感觉。 为了进行对比,先举一个正常的...
    99+
    2024-04-02
  • java内部类的最详细详解
    目录1、成员内部类2、静态内部类3、方法内部类4、匿名内部类总结1、成员内部类 内部类与外部类的关系 a.成员内部类的创建需要依赖于外部类对象-(成员方法必须通过对象调用),在没有...
    99+
    2024-04-02
  • java外部类与内部类的关系详解
     private,public,protected,default的访问权限区别 在学习外部类与内部类之前我们首先要弄明白private,public,protected,defau...
    99+
    2024-04-02
  • Java内部类和异常类的示例分析
    这篇文章将为大家详细讲解有关Java内部类和异常类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1 内部类Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌...
    99+
    2023-06-14
  • Java--内部类学习笔记
    本文介绍了什么是内部类,Java中的内部类:实例内部类. 静态内部类.局部内部类.匿名内部类的语法和注意事项,以及每个内部类的运用场景,以及简单介绍了匿名内部类更简洁更特殊的语法->lambda表...
    99+
    2023-09-11
    java 学习 笔记
  • java内部测试类的示例分析
    这篇文章将为大家详细讲解有关java内部测试类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。我们一般使用的java内部类有4种形式:一般内部类、局部内部类、匿名内部类、静态内部类。以下是我作的一...
    99+
    2023-05-30
    java
  • JAVA抽象类,接口,内部类详解
    目录一.内容抽象类抽象方法与抽象类抽象类的使用接口接口的概念接口的定义接口中的成员变量接口中的方法接口的继承接口的实现/使用接口与抽象类的差异面向接口编程内部类非静态内部类静态内部类...
    99+
    2024-04-02
  • Java Spring登录练习详解
    目录编写Massage类和User类(方便后面使用)三层内容编写测试文件pom.xml和spring.xml配置总结编写Massage类和User类(方便后面使用) Mas...
    99+
    2024-04-02
  • java内部类之成员内部类、局部内部类和匿名内部类用法及说明
    目录内部类概念分类成员内部类使用成员内部类间接方式访问内部类直接方式访问内部类外部类和内部类变量重名问题局部内部类修饰内部类的权限匿名内部类测试类 一、匿名内部内应用总结内部类概念 ...
    99+
    2022-12-23
    java成员内部类 java局部内部类 java匿名内部类 java内部类
  • java基础之内部类的示例分析
    这篇文章主要为大家展示了“java基础之内部类的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java基础之内部类的示例分析”这篇文章吧。1、匿名内部类内部类:在一个类的内部定义了另外的...
    99+
    2023-06-20
  • 详解Java 中的嵌套类与内部类
    详解Java 中的嵌套类与内部类在Java中,可以在一个类内部定义另一个类,这种类称为嵌套类(nested class)。嵌套类有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类较少使用,非静态嵌套类使用较多,也就是常说的内部类。其中内部类又...
    99+
    2023-05-31
    java 嵌套类 内部类
  • Java日常练习题的示例分析
    这篇文章将为大家详细讲解有关Java日常练习题的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、AWT 中用来表示文本框的类是 ( )正确答案: A TextFieldMenuLabelList...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作