java -- 抽象 接口

来源:互联网 发布:linux网卡配置生效 编辑:程序博客网 时间:2024/06/05 16:03

一、 抽象

  • 抽象:抽象就是看不懂的
  • 抽象使用的关键词 abstract
  • 1.abstract修饰类 抽象类
  • 2.abstract修饰方法 抽象方法
  • 3.抽象法国法 没有实现部分
  • 注意:抽象类中的抽象方法 强制子类去重写抽象方法
  • 注意:抽象类不能实例化对象(创建对象)
  • 创建对象的方式:比照多态来创建

  • 抽象类注意:
  • 1.成员变量:可以有变量,也可以有常量
  • 2.成员方法:可以有抽象方法,也可以有成员方法
  • 3.构造方法:有
  • 注意:抽象类中不一定有抽象方法,但是抽象方法一定存在抽象类中
  • 注意:抽象类的子类 必须重写抽象父类的所有抽象方法

    public static void main(String[] args) {//  父类引用指向子类的对象Animal animal = new Cat();animal.eat();animal.name();}}abstract class Animal{final int i = 10;public Animal() {System.out.println("我是父类的构造方法");}public abstract void eat();public void name() {System.out.println("我是成员方法");}}class Cat extends Animal{    @Override    public void eat() {        System.out.println(i);        System.out.println("猫吃鱼");    }}

    打印结果
    这里写图片描述

    1.一个类没有抽象方法 可不可以定义为抽象类 如果可以那么作用是什么?
    作用:禁止创建抽象类的对象出来 只能使用其子类
    2.abstract 与那些关键字不能共存
    abstract 和 static
    static 修饰方法用类名去调用 abstract 修饰抽象方法没有方法的实现,没有实现部分的方法 只能是方法的声明 不能直接调用 所以不能共存
    abstract 和 final
    final修饰方法 不能被重写 abstract修饰方法就是为了子类重写方法所以不能共存
    private 和 abstract
    private 修饰方法 只能本类访问,子类访问不到,谈不上重写,所以不能够共存

二、 接口:
狭义的接口:interface 关键词修饰的,叫做接口
广义的接口:规则

  如何定义接口:interface 接口名{}

接口的特点:
1.接口中只能声明抽象方法
2.如果你不写 public abstract,关键词修饰,接口中声明方法,那么系统会帮你默认添加上
(书写建议:最好写上默认的修饰词)
3.接口也不能实例化对象(谁要用接口,谁就要实现接口中的方法),可以使用多态方式创建实现类的对象
4.接口的实现 使用 implement 关键字

接口注意:
1.成员变量:有但是只能有常量 public static final 常量名 = 初值;当你在接口中声明变量是 系统默认会是public static final修饰

2.成员方法:没有成员方法(只有抽象方法)

3.构造方法:没有构造方法

类与类的关系:继承关系,并且是单继承 和 多继承

类和接口的关系:实现关系,可以单实现,也可以多实现(接口相当于 干爹 继承相当于亲爹)

接口和接口的关系:可以单继承,也可以多继承

public class Demo03 {public static void main(String[] args) {    InterA iA = new Person();    iA.print();}}interface InterA{public static final int num = 10;public abstract void print();}class Person implements InterA{//  实现这个方法@Overridepublic void print() {    System.out.println("我是人类的打印");}}//  类与接口的联系interface InterX{public abstract void fun();}interface InterY{public abstract void fun1();}interface InterZ extends InterX, InterY{}class Car implements InterX, InterY{@Overridepublic void fun() {    System.out.println("我是fun");}@Overridepublic void fun1() {    System.out.println("我是fun1");}}

总结:
接口更像是抽象类的另一种形式,因为接口只可以有抽象方法,没有抽象类可以实现其他部分的方法,但是接口的优势在与可以多继承,在实际编程设计中抽象类中要考虑到子类的所有共同属性和方法,但是接口就不需要,因为接口是针对一种规则的描述,在同一类中实现多个接口,在设计阶段大大降低了难度
抽象类与接口的异同点:
他们的共同点:
1) 都不能被实例化
2) 都能包含抽象的方法,这些抽象的方法用于描述类具备的功能,但是不给提供具体的实现。他们的不同点
1) 在抽象类中可以写非抽象的方法,从而避免在子类中重复书写他们,这样可以提高代码的复用性,这是抽象类的优势;接口中只能有抽象的方法。
2) 一个类只能继承一个直接父类,这个父类可以是具体的类也可是抽象类;但是一个类可以实现多个接口(可以多继承)

原创粉丝点击