内部类练习题(静态内部类应用)

package com.Summer_0429.cn;

/**
 * @author Summer
 * 静态内部类的应用
 * 示例:
 * 定义一所学校,学校有:
 *         饮水机:WaterFountain
 *             水量
 *         管理饮水机();
 *
 * 要求:创建一所学校,访问饮水机的水量
 *
 */
class School{
    static int ssn = 33;
    static class WaterFountain{
        int n = 11;
        static int sn = 22;
        public void f(){
            System.out.println("水量:"+n);
        }
        public static void sf(){
        //    System.out.println(new WaterFountain().n);//静态方法访问非静态变量
        System.out.println(sn);//静态方法访问静态成员绝对没有问题
        System.out.println(ssn);//静态内部类直接访问静态外部类中变量
        }
    }
    public void show(){
        //外部类中访问静态内部类中的成员
        //访问实例成员
        WaterFountain wf = new WaterFountain();
        wf.f();
        //外部类中访问静态成员,不需要创建对象进行实例化
        School.WaterFountain.sf();
    }
}

public class TestStatic {

    public static void main(String[] args) {
        School school = new School();
        school.show();
        //顶级类中访问静态类中的静态方法不需要创建对象,直接访问即可
        School.WaterFountain.sf();
        //顶级类中访问静态类中的成员方法,需要创建静态内部类对象进行访问
        School.WaterFountain sw = new School.WaterFountain();
        sw.f();

    }

}

原文地址:https://www.cnblogs.com/summerdata/p/10795433.html

时间: 2024-11-10 13:45:02

内部类练习题(静态内部类应用)的相关文章

java内部类和静态内部类

看代码理解内部类,局部内部类和静态内部类 内部类代码: public class InnerTest { private static String name; private int age; public InnerTest(String name, int age){ this.name = name; this.age = age; } public void getInstance() { System.out.println("name:" + name.toString(

内部类与静态内部类

前言 如果你是一个急性子,没什么耐性的人,可以只看下句,自己去品味理解: 内部类:就是我是你的一部分,我了解你,我知道你的全部,没有你就没有我.(所以内部类对象是以外部类对象存在为前提的) 静态内部类:就是我跟你没关系,自己可以完全独立存在,但是我就借你的壳用一下,来隐藏自己. 如果还不知道静态和普通成员的区别,就先学static吧. 静态成员:属于这个类,数据存放在class文件中,程序运行之前就已经存进去数据了. 普通成员:属于这个类的对象,程序运行后生成堆栈中. 先来看一下官方说法,根据O

内部类练习题(静态内部类应用-图书馆管理图书)

package com.Summer_0430.cn; /** * @author Summer * 定义一所图书馆Library,有 * 图书 * 书名 * 作者 * 单价 * 管理图书 * * 要求:创建一所图书馆,管理图书 */ class Library{ static class Book{ private String name; private String author; private double price; public Book(String name,String a

内部类及静态内部类的实例化

内部类的实例化 如果内部类未声明为static,在实例化时首先需要new一个外部类的对象.并通过p.new Inner()的方式new 内部类,表明这个内部类指向该外部类.内部类的class类型为:Parent.Inner,而不是p.Inner,这个需要和new的方式区分开. public class Test {  public static void main(String[] args) {   Parent p = new Parent();   Parent.Inner i = p.n

Java中的嵌套类、内部类、静态内部类

在Java中我们在一个类的内部再定义一个类,如下所示: class OuterClass { ... class NestedClass { ... } } 那么在上面的例子中我们称OuterClass为外围类(enclosing class),里面的那个类称之为嵌套类(Nested Class). 嵌套类可以分为两种,静态的和非静态的,即静态嵌套类和非静态嵌套类.非静态嵌套类又叫做内部类(Inner Class).我们通常所说的静态内部类其实是不严格的,严格的说应该叫做静态嵌套类(Static

java 内部类和静态内部类的区别

下面说一说内部类(Inner Class)和静态内部类(Static Nested Class)的区别:定义在一个类内部的类叫内部类,包含内部类的类称为外部类.内部类可以声明public.protected.private等访问限制,可以声明 为abstract的供其他内部类或外部类继承与扩展,或者声明为static.final的,也可以实现特定的接口.外部类按常规的类访问方式使用内部 类,唯一的差别是外部类可以访问内部类的所有方法与属性,包括私有方法与属性. (1)创建实例 OutClass.

学习笔记——Java内部类练习题

1.尝试在方法中编写一个匿名内部类. package com.lzw; public class AnonymityInnerClass { } class OuterClass4{ public OutInterface doit(final String s){ return new OutInterface(){ private int i=0; public int getValue(){ System.out.println(s); return i; } public void f(

内部类之静态内部类

一.位置 被定义在一个类下,且被static修饰 二.结构 静态内部类下可以定义静态和非静态的属性和方法 三.静态内部类访问外部类 1.不能访问外部类非静态的属性和方法 2.调用属性[方法]方式: 2.1直接写属性名[调用方法名]-------本质还是第二种 2.1外部类.属性名[方法名] 源码: class Outter { private static int b =3; public static void test(){ System.out.println("外部类静态方法"

内部类练习题(外部类访问内部类成员、内部类访问外部类成员、顶级类访问内部类成员)

package com.Summer_0429.cn; /** * @author Summer * 内部类实例: * 定义一只猫类,猫有: * 1.重量 * 2.猫的身体: * 1)颜色 * 2)显示猫的身体的信息(): * 3.显示猫的整体信息(): * 要求:创建一只小猫,显示它的整体信息. * */ class Cat{ private double weight; public Cat(double weight){ this.weight = weight; } //内部类:成员内部