类的高级特性-内部类

java类包
  • 创建包 package 包名
  • 导入包 import 包名

一、抽象类

抽象类:只声明方法的存在,而不去具体实现

  1. 抽象类不能被实例化
  2. 关键字abstract
  3. 定义抽象类:
权限修饰符 abstract class 类名{
	类体
	// 抽象方法
}
抽象方法:
abstract 返回值类型 方法名(参数列表)
  • 必须要在子类中重写
  • 抽象方法不能使用private、static、final修饰
  • 在子类中应实现抽象类的所有抽象方法,如果还有未实现的抽象方法,则子类必须声明为抽象类

二、内部类

1. 成员内部类
public class OuterClass{  // 外部类
	public class innerClass{  // 内部类
		// ...
	}
}
  1. 在内部类中可以随意使用外部类的成员变量、成员方法(private也可以)
  2. 内部类的实例一定绑定在外部类的实例上
  3. 内部类的成员只在内部类的范围内访问,不能直接被外部类使用
  4. 如果内部类没有被声明为静态,则不能含有静态变量
  5. 外部类引用内部类:外部类名.内部类名
  6. 内部类实例化:new
  7. 使用this关键字获取内部类与外部类的引用
    在这里插入图片描述
2. 局部内部类

局部内部类就是在类的方法中定义的内部类,作用范围只在这个方法体内

class OuterClass3{
    public OutInterface2 doit(final String x){      //doit()方法参数为final类型
        //在doit()方法中定义一个内部类
        class InnerClass2 implements OutInterface2{
            InnerClass2(String s){
                s = x;
                System.out.println(s);
            }
        }
        return new InnerClass2("doit");
    }
}

3. 匿名内部类
return new A(){
	//...内部实体
}
class OuterClass4{
    public OutInterface2 doit(){  // 定义一个doit方法
        return new OutInterface2(){  // 声明匿名内部类
            private int i = 0;
            public int getValue(){
                return i;
            }
        };
    }
}

4. 静态内部类

在内部类名前加修饰符statiic

/**
 * 静态内部类
 * 静态内部类不可以使用外部类的非静态成员
 * 如果创建静态内部类的对象,不需要其外部类的对象
 * 不能从静态内部类的对象中访问非晶态外部类的对象
 * */
5. 内部类的继承
/**
 * 内部类的继承
 * 
 * 当某个类继承内部类时,必须硬性给予这个类一个带参数的构造方法,
 * 并且这个构造方法的参数为需要继承内部类的外部类的引用,
 * 同时在构造方法体中使用 外部类引用.super()语句,这样才为继承提供了必要的对象引用
 * */
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值