Java学习10

抽象类

.在这里插入图片描述

  1. abstract:抽象的
  2. abstract可以修饰类和方法
  3. abstract修饰类:叫做抽象类
    1)抽象类不能被实例化
    2)抽象类中一定有构造器,便于子类实例化的调用
    3)开发中,都会提供抽象类的子类,让子类对象实例化,完成先骨干的操作
  4. abstract修饰抽象方法
    1)抽象方法只有方法的声明,没有方法体
    2)包含抽象方法的类,一定是一个抽象类。但是,抽象类中可以没有抽象方法
    3)若子类重写了父类所有的抽象方法,则该子类可以实例化;
    若子类没有重写全部的抽象方法,则此子类也是一个抽象类,需要使用abstract修饰
    4)abstract不能用来修饰私有方法、静态方法、final方法、final类

思考
在这里插入图片描述
抽象类的匿名子类

person是一个抽象类
抽象类不能创建对象
匿名类是为了方便,不用新建一个子类
在这里插入图片描述
work 继承于 person
创建匿名对象;普通对象;非匿名类的匿名对象
在这里插入图片描述
创建一个匿名子类的匿名对象
在这里插入图片描述
模板方法的设计模式
抽象类的应用

接口
接口的使用

  1. 接口使用interface来定义
  2. Java中,接口和类是并列的两个结构
  3. 如何定义接口、定义接口中的成员
    1)JDK7.0以前:接口中只能定义全局常量和抽象方法
    》全局常量:public static final的
    》抽象方法:public abstract的

2)JDK8.0:接口中除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法
》接口中定义的静态方法只能接口自己使用
》通过实现类的对象,可以调用接口中的默认方法
》接口中的默认方法可以被实现类重写
》如果接口的实现类所继承的父类下,存在和接口同名同参的默认方法,则实现类在未重写接口默认方法的情况下,默认调用的是父类中的方法----类优先原则
》如果实现类实现了多个接口,而这多个接口中定义了同名同参的默认方法,实现类又没有重写此方法的情况下,编译就会报错–接口冲突,这就需要在实现类中重写此方法。
》如何在子类或实现类的方法中调用父类、接口中的被重写方法
在这里插入图片描述

  1. 接口中不能定义构造器,意味着接口不可以实例化

  2. Java开发中,接口通过类去实现
    如果实现类覆盖了接口中所有的抽象方法,则此实现类就可以实例化
    如果实现类没有覆盖接口中所有的抽象方法,则此实例类仍为一个抽象类
    实现和覆盖本质没有去别

  3. Java类可以实现多个接口–弥补了Java的继承性
    在这里插入图片描述

  4. 接口和接口之间也叫继承,而且可以多继承

  5. 接口具体的使用体现了多态性
    在这里插入图片描述

  6. 接口实际上就是定义了一种规范

  7. 体会面向接口编程

在这里插入图片描述

在这里插入图片描述

抽象类和接口有哪些异同

接口的应用:代理模式
接口的应用:工厂模式

内部类

  1. Java中允许将一个类A声明在另一个类B中,则A就是内部类,B是外部类
  2. 内部类的分类:成员内部类(静态成员内部类,非静态成员内部类)、局部内部类(方法内、代码块内、构造器内)
  3. 成员内部类:
    1)作为一个类,成员内部类的作用:
    》类内可以定义属性、方法、构造器等
    》可以被final修饰,表示该类不能被继承
    》可以被abstract修饰
    2)作为一个外部类的成员,成员 内部类的作用:
    》调用外部类的方法和属性
    》可以被static修饰
    》可以被4种不同权限修饰
  4. 内部类的重点
    1)如何实例化成员内部类的对象
    Person.Dog dog = new Person.Dog();
    Person p=new Person();
    Person.Bird bird=p.new Bird();
    在这里插入图片描述

2)如何在成员内部类中区分调用外部类的结构
name
this.name
person.this.name
3)开发中内部类的使用

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值