抽象类,接口,匿名对象

1、应用场景:
a、在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法精确知道这些子类如何实现这些方法(抽象类只约束子类有哪些方法,并不关注具体是怎么实现的)
b、从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免子类设计的随意性
2、作用(目的):限制规定子类必须实现某些方法,但不关注细节

抽象类使用规则
1、abstract定义抽象类
2、abstract定义抽象方法,只有声明,不需要实现
3、包含抽象方法的类是抽象类
4、抽象类中可以包含普通方法,也可以没有抽象方法
5、抽象类不能直接创建,可以定义引用变量
6.抽象方法没有方法体以分号结束

抽象类中一定有构造函数。主要为了初始化抽象类中的属性。通常由子类实现。
final和abstract是否可以同时修饰一个类?  一定不能同时修饰。

抽象类的特点
1:有抽象函数的类,该类一定是抽象类。
2:抽象类中不一定要有抽象函数。
3:抽象类不能使用new创建对象
1:创建对象,使用对象的功能,抽象类的方法,没有方法体。
4:抽象类主要为了提高代码的复用性,让子类继承来使用。
5:编译器强制子类实现抽象类父类的未实现的方法。
1:可以不实现,前提是子类的也要声明为抽象的。
抽象类要注意的细节:
1. 如果一个函数没有方法体,那么该函数必须要使用abstract修饰,把该函数修饰成抽象 的函数。。
2. 如果一个类出现了抽象的函数,那么该类也必须 使用abstract修饰。
3. 如果一个非抽象类继承了抽象类,那么必须要把抽象类的所有抽象方法全部实现。
4. 抽象类可以存在非抽象方法,也可以存在抽象的方法.
5. 抽象类可以不存在抽象方法的。 
5. 抽象类是不能创建对象的。
疑问:为什么抽象类不能创建对象呢?
因为抽象类是存在抽象方法的,如果能让抽象类创建对象的话,那么使用抽象的对象
调用抽象方法是没有任何意义的。
6. 抽象类是存在构造函数的,其构造函数是提供给子类创建对象的时候初始化父类的属性的。


接口需要用 abstract 修饰 没有写上去系统会自动生成,并且接口是多继承,可继承多个父类。
接口没有构造方法。不能创建对象
接口创建时,通过写匿名内部类来写接口的实现
1. 接口中的所有属性 默认的修饰符是  public static final。
2. 接口中的所有方法 默认的修饰符是  public abstract。


如果实现类中要访问接口中的成员,不能使用super关键字。因为两者之间没有显示的继承关系,况且接口中的成员成员属性是静态的。可以使用接口名直接访问。

1.Interface i = new Interface(){
      public void method(){
       system.out.println("匿名内部类实现接口的方式");
};
i.method();

2.new Interface(){
      public void method(){
       system.out.println("匿名内部类实现接口的方式");
}.method();

匿名对象:没有名字的实体,也就是该实体没有对应的变量名引用。
匿名对象的用途
1,当对象对方法进行一次调用的时候,可以使用匿名对象对代码进行简化。
      为什么只对方法,而不调用属性呢?因为匿名对象调用属性没意义。
         如果对象要多成员进行多次调用,必须给对象起个名字。不能在使用匿名对象。
2,匿名对象可以实际参数进行传递。
         1:new Car().run(); 
3:内存结构图
        1:new Car().num=5;
        2:new Car().clor="blue";
两个new 是两个不同的对象,在堆内存中有不同的空间,相互不相互干扰
当只使用一次时可以使用匿名对象。执行完毕到;后该对象就变成了垃圾。
执行方法时,可以将匿名对象作为实际参数,传递进去。
任何两个匿名对象使用==比较,永远返回false。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值