Day09——抽象、接口、引用类型数组

Day09

抽象类

一定是父类,抽象类充当父类才有意义

  1. 将派生类共有的属性和行为,抽到超类
  2. 若派生类的代码和行为都一样则设计为普通方法
  3. 若派生类的行为和代码不一样,设计为抽象方法

抽象方法

  1. 抽象方法,只有方法签名,没有方法体
  2. 抽象方法只能定义在抽象类中,或者抽象方法只能定义在抽象类中的抽象方法中
  3. 抽象类中可以没有抽象方法,但是有抽象方法的类必须定义为抽象类
  • 包含抽象方法的类必须是抽象类,抽象类和抽象方法均由abstract修饰

    抽象类不能被实例化(new)

    public abstract class Animal {
      ...
      abstract void eat();
    }
    
  • 抽象类是需要被继承的

    继承时子类会继承父类的所有属性和行为,包括抽象方法,所以子类在不进行任何操作直接继承父类之后会报错

    子类解决报错的两种方法:

    1. 将子类声明为抽象类
    2. 在子类中重写全部父类抽象方法

抽象类的意义

  • 封装共有的属性和行为——提高代码复用性
  • 可以包含抽象方法
    • 为子类提供统一的入口(共有方法方法名相同)
    • 强制子类必须重写所有抽象类

接口

将部分类的共有行为抽出,将其方法签名单独写入一个接口中,为拥有该行为的类提供统一标准

接口的意义

  1. 解决继承单一继承的弊端,接口可以被多个类同时继承(实现)
  2. 接口是一种标准和规范,表述具备某种功能
  3. 实现一个接口需要实现这个接口的所有方法

接口的定义

接口本身也是一个引用数据类型,使用 interface 关键字进行定义

接口不能被实例化

重写接口中的方法时,必须使用 public 修饰符

interface 接口名 {
    void 方法名();
}

接口的特点

  • 一个类可以实现多个接口,以逗号分隔

    class Student implements Inter01, Inter02 {
        ...
    }
    
  • 当继承类和实现接口同时出现在一个类中时,先继承后实现

    class Student extend Person implements Inter01, Inter02 {
        ...
    }
    
  • 接口可以继承接口

    接口继承接口,会继承父接口的所有抽象方法,当类实现该接口时,需要实现该接口及其父接口中的所有方法

    interface Inter03 {
        void show();
    }
    interface Inter04 extends Inter03 {
        void test();
    }
    
    class Student implements Inter04 {
        public void show(){}
        public void test(){}
    }
    

引用类型数组

数组元素为引用类型的数组称为引用类型数组

Major[] majors= new Major[10];//数组中每个元素都是一个Major类

引用类型数组的默认值都为null

赋值

引用数据类型数组的每一个元素都是一个对象,所以对每一项赋值时需要使用new关键字调用对应类的构造方法

//赋值
majors[0] = new Major("张三", 20, 10000);

方法调用及属性访问

调用构造函数赋值之后,数组中的每个元素就成为了一个含属性的对象,直接用元素对对应类中的属性和行为进行调用即可

注:要想访问对象的属性和行为,在对应的类中必须将属性和行为的访问修饰符改为public

//访对象属性
System.out.println(majors[0].name);
System.out.println(majors[0].age);
System.out.println(majors[0].salary);

//访问对象行为
majors[0].solveProblem();
majors[0].editCompile();
majors[0].trainStaff();
majors[0].workOn();
majors[0].workOff();
majors[0].workDown();
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值