java类的定义位置
java的类可以定义在任何位置:
一般的类是一个文件里面写一个类,且类名和文件名相同,但是定义类的位置可以是任意的如图:
上图示例:
public class A{
class B{ }
static class C{ }
void doSomeThing(){
class D{ }
}
}
class E{ }
interface F{ }
实例展示:
public class A{
class B{
void im(){
System.out.println("I am B");
}
}
static class C{
void im(){
System.out.println("I am C");
}
}
void doSomeThing(){
System.out.println("I am A doSomeThing");
class D{
void im(){
System.out.println("I am D");
}
}
D d=new D();
d.im();
}
public static void main(String[] args) {
A a=new A();
a.doSomeThing();
B b=a.new B();
b.im();
C c=new A.C();
c.im();
E e=new E();
e.im();
F f=new F(){
public void im(){
System.out.println("I am F");
}
};
f.im();
}
}
class E{
void im(){
System.out.println("I am E");
}
}
interface F{
void im();
}
通过上面的示例就可以看出,Java的类可以放在任何位置。
1、放在同级的类中的是其他类,不能被该文件之外的其他类访问。
2、放在类中的属于内部类。
3、放在类中且被static关键词修饰的属于静态内部类。
4、放在类中的方法里面的类属于局部内部类。
特别说明: 类F(匿名内部类)
F类是一个接口,拥有一个 im() 方法,但是没有实现类,一般来说我们要先为她创建实现类实现里面的方法,才能调用,但是也可以在创建它的实例的时候再去实现它,这样的话实现类就不见了(也就是匿名了),所有称这样的类叫做匿名内部类。
匿名内部类的三要素:
1、匿名的类必须包含抽象方法(接口/抽象类)。
2、在实例化类的同时去实现该抽象方法。
3、由于没有名字,只能使用一次。
java类的定义位置的更多相关文章
- java类中定义接口
今天看到一个java类中定义了接口,写个备忘录,记录一下 package com.gxf.test; public class Test_interface { public interface sh ...
- Java类的定义与类的实例化
目录 Java类的定义与类的实例化 类的定义 定义一个简单的类 定义一个成员变量 定义一个方法 定义一个构造器 类的实例化 创建对象及使用对象: 创建对象的过程在内存中的表现 Java类的定义与类的实 ...
- 夜谈Java类的定义
女孩:谈Java了,好耶? 男孩:夜谈一下,Java的类的定义~ 女孩:那谈Java的类的什么呢? 男孩:类的定义,对象的定义,类中的方法,构造方法,this关键字,方法的重载,Java中的类的访问权 ...
- Java类的定义及其实例化
如果你不了解类和对象的概念,请猛击这里:Java类和对象的概念 类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: public cl ...
- 《Java基础知识》Java类的定义及其实例化
类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: public class Dog { String name; int age; ...
- java 类内部定义接口
java类内部可以定义接口,作用可以看作是对类功能的进一步补充,类里面包含两部分:一部分是自己的固定的,一部分是可以变化的,而这可变的部分就编程了一个接口. 另一个作用是避免命名冲突. 示例 类Fru ...
- 7.2 java 类的定义和使用
/* * 类的定义: * 类是用来描述现实世界的事物的 * * 事物: * 属性 事物的描述信息 * 行为 事物能够做什么 * * 类是如何和事物进行对应的呢? * 类: * 成员变量 * 成员方法 ...
- java类的定义与使用
一 引用数据类型 1.引用数据类型的分类 我们可以把类的类型为两种: 第一种,Java为我们提供好的类,如Scanner类,Random类等,这些已存在的类中包 含了很多的方法与属性,可供我们使用. ...
- java类的定义以及参数传递
class类(类似结构体)的定义 import java.util.Scanner; import java.io.*; class student{//类的名称 public String name ...
随机推荐
- LeetCode 041 First Missing Positive
题目要求:First Missing Positive Given an unsorted integer array, find the first missing positive integer ...
- Django 多对多表的三种创建方式
第一种: class Book(models.Model): name = models.CharField(max_length=32) # 第一种自动创建 authors = models.Man ...
- ASP.Net Core 3.1 使用gRPC入门指南
主要参考文章微软官方文档: https://docs.microsoft.com/zh-cn/aspnet/core/grpc/client?view=aspnetcore-3.1 此外还参考了文章 ...
- Django----setting.py配置
过滤器 1,安装 django-filter 2,注册应用 3,配置settings, 在view里配置可过滤的字段 4,使用 查询字符串携带过滤信息 REST_FRAMEWORK = { # 文档报 ...
- Spring Cloud 学习 (四) Hystrix & Hystrix Dashboard & Turbine
在复杂的分布式系统中,可能有几十个服务相互依赖,这些服务由于某些原因,例如机房的不可靠性.网络服务商的不可靠性等,导致某个服务不可用 . 如果系统不隔离该不可用的服务,可能会导致整个系统不可用.Hys ...
- 喝完可乐桶后程序员回归本源,开源Spring基础内容
周六了,又是摸鱼的一天,今天还有点不在状态,脑瓜子迷迷糊糊的,昨晚出去喝可乐桶喝的脑子到现在都不是很正常(奉劝各位可以自己小酌:450ml威士忌+1L多一点可乐刚刚好,可能是我酒量不好),正好没啥事就 ...
- 极简python教程:快速入门好方法
大家好,我是测试奇谭的作者风风. 其实很久之前,就有身边的同事或者网友让我分享一些关于python编程语言的快速教程,他们的痛点同大多数自学编程语言的人一样,遇到了这些问题: 网络上的信息太多,良莠不 ...
- node-sass版本问题
node-sass sass-loader的问题 出现了版本的问题 版本太高 版本不兼容解决方法: cnpm i node-sass@4.14.1 cnpm i sass-loader@7.3.1 - ...
- 第15.40节、PyQt(Python+Qt)实战:moviepy实现MP4视频转gif动图的工具
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 在写<第15.39节.splitDockWidget和 ...
- ES6新特性之箭头函数与function的区别
写法不同 // function的写法 function fn(a, b){ return a+b; } // 箭头函数的写法 let foo = (a, b) =>{ return a + b ...