提出问题
java中的嵌套接口和嵌套类???
解决问题
接口嵌套接口
/**
* 花(接口嵌套接口)
*/
interface Flower{
//接口默认是abstract的的
//public abstract interface Flower{
/**
* 心脏
*/
interface FlowerHeart{
//接口中定义的变量默认是public static final 型,且必须给其初值
public static final int age = 99;
}
//嵌套接口默认是public,下面写法也可以
//public interface FlowerHeart{}
//嵌套接口默认是public,不能是private,下面写法错误
//private interface FlowerHeart{}
}
接口嵌套类
/**
* 花(接口嵌套类)
*/
interface Flower{
/**
* 花的心脏
*/
class FlowerHeart{
}
}
类嵌套接口
/**
* 花(类嵌套接口)
*/
class Flower{
/**
* 花的根须
*/
interface Roots{
}
}
类嵌套类
/**
* 花(类嵌套接口)
*/
class Flower{
/**
* 花的根须
*/
class Roots{
}
}
thinking in java例子
class A {
private interface D {
void f();
}
private class DImp implements D {
public void f() {}
}
public class DImp2 implements D {
public void f() {}
}
public D getD() { return new DImp2(); }
private D dRef;
public void receiveD(D d) {
dRef = d;
dRef.f();
}
}
public class NestingInterfaces {
public static void main(String[] args) {
A a = new A();
//The type A.D is not visible
//D是A的私有接口,不能在外部被访问
//! A.D ad = a.getD();
//Cannot convert from A.D to A.DImp2
//不能从A.D转型成A.DImpl2
//! A.DImp2 di2 = a.getD();
//The type A.D is not visible
//D是A的私有接口,不能在外部被访问,更不能调用其方法
//! a.getD().f();
A a2 = new A();
a2.receiveD(a.getD());
}
}
嵌套静态类
class StaticClassTest {
//私有 static 成员变量
private static String mylove = "ay & al";
//私有成员变量
private String id = "100424060";
static class Person{
private String address = "厦门";
public String mail = "ay@163.com";//内部类公有成员
public void display(){
System.out.println(id);//不能直接访问外部类的非静态成员
System.out.println(mylove);//只能直接访问外部类的静态成员
System.out.println("Inner "+address);//访问本内部类成员。
}
}
public void test(){
Person person = new Person();
person.display();
//System.out.println(mail);//不可访问
//System.out.println(address);//不可访问
System.out.println(person.address);//可以访问内部类的私有成员
System.out.println(person.mail);//可以访问内部类的公有成员
System.out.println(Person.mail);//另外一种访问方法
System.out.println(Person.mail);//
}
public static void main(String[] args) {
StaticClassTest staticTest = new StaticClassTest();
staticTest.test();
}
}