
所谓内部类就是在类的内部声明类 ,这样内部类可以分为 成员内部类 和局部内部类。
下面是学习笔记:
package oop.inner_class;
import oop.inner_class.Person.Legs;
public class InnerClassTest {
public static void main(String[] args) {
//创建Legs实例(静态成员内部类):
Person.Legs legs = new Person.Legs();
legs.say();
//创建Brain实例(非静态成员内部类):
// Person.Brain brain=new Person.Brain(); 错误的
Person p=new Person();
Person.Brain brain =p.new Brain();
brain.show();
}
}
class Person{
String name;
public void say() {
System.out.println("人可以说话");
}
//非静态成员内部类
class Brain{
String name;
public void show() {
say();//可以调用外部类的方法
}
public void method(String name) {
System.out.println(name);//形参
System.out.println(this.name);//Brain的name(内部类的属性)
System.out.println(Person.this.name);//Person的name(外部类的属性)
}
//静态成员内部类
static class Legs{
String name;
double width;
public void say()
{
System.out.println("这是大腿");
}
public Legs() {
}
}
public void method() {
say();
//局部内部类
class AA{
}
}
{ //局部内部类
class BB{
}
}
public Person() {
class CC{
}
}
}
}
package oop.inner_class;
public class InnerClassTest1 {
//开发中很少见
public void method() {
//局部内部类
class AA{
}
}
//返回一个实现了Comparable接口的类的对象
public Comparable getComparable() {
class MyComparable implements Comparable{
//创建一个实现了Comparable接口的类:局部内部类
//方法一:
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
return 0;
}
}
return new MyComparable();
//方式二
return new Comparable() {
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
return 0;
}
};
}
}
package oop.inner_class;
public class InnerClassTest2 {
}
class Person{
public void method() {
final int num=10;
class AA{
public void show(){
System.out.println(num);
// num=20; The final local variable num cannot be assigned, since it is defined in an enclosing type
//此时的num必须为final类型的
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)