Java基础:抽象类与接口,内部类

一:抽象类:由abstract关键字修饰的类称作为抽象类。也是类,只不过多了可以定义抽象方法的功能。

 抽象方法:由abstract关键字修饰的方法称作为抽象方法。特点:父类定义的抽象方法,子类必须重写。

定义抽象类语法:[public] abstract 类名{}

定义抽象方法语法:public abstract void|返回值类型     方法名(参数列表);

  • 注意点:
  1. 抽象类中不一定存在抽象方法,但是存在抽象方法的类一定是抽象类。
  2. 抽象类不能被实例化(不能创建对象)
  3. 构造器和静态方法不能定义为抽象的。

关键字abstract(抽象的)和final(最终的)相互冲突,不能同时使用。

二:接口(interface):比抽象类还要抽象。接口中只有功能的声明,没有功能的任何实现。

定义接口:interface 接口名{}

 对比对象接口和抽象类:

  1. 抽象类是半抽象化的,可以定义抽象方法,也可以定义普通的功能。
  2. 接口是完全抽象的,只能抽象方法。

三:类和接口的关系类和接口的关系

  • 类与类之间的关系:只有继承关系,并且只能是单继承。关键字extends
  • 类与接口之间的关系:类可以实现接口,并且可以实现多个接口。关键字implements
  • 接口和接口之间的关系:接口可以继承接口,并且可以实现多继承

四:内部类:定义在类中的类称之为内部类。

  • 局部内部类:类似于局部变量。 定义的位置:在类中的方法中定义的类。
  • 成员内部类:类似于成员变量。定义的位置:在类中方法外定义的类。
  • 静态内部类:类似静态变量。定义的位置:在类中方法外定义的类,但是有static修饰, 先于构造器加载。

 作用:通常用于执行类中只需要执行一次的操作,比如初始化某些静态属性。

  • 匿名内部类:没有名字的内部类。
 //使用匿名内部类
testFly(new Bird() {//创建匿名内部类
//必须重写父类的抽象方法
@Override
public void fly() {
System.out.println("大鹏一日同风起,扶摇直上九万里");
	}
});

五:什么时候:类会加载?

  1. 调用静态的属性或方法
  2. 通过new创建该类的对象
  • 注意:只是声明类型不会加载类

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值