super this 抽象类 接口

今日内容

  • super
  • this
  • 抽象类
  • 接口
  • 三大特征—多态
  • 引用类型转换
super和this的含义
  • super:代表父类的存储空间标识(可以理解为父类的引用)
  • this:代表当前对象的引用(谁调用就是代表谁)
super和this的用法

​ super

  1. 访问父类的成员

    super.成员变量;
    super.成员方法();
    
    1. 访问父类的构造方法

      super(...)  父类的构造方法
      
      1. 继承关系中,父类的构造方法的访问特点:
        • 子类构造方法当中有一个默认的隐式的super()调用,所以一定是先调用父类的构造,后执行的子类构造
        • 子类构造可以通过super关键字来调用父类的重载构造
        • super的父类构造调用,必须是子类构造方法中的第一个语句。不能一个子类构造调用多次super构造。

      总结:

      ​ 子类必须调用父类的构造方法,不写则赠送super();写了则用写的指定的super调用,super只能有一个,还必须是第一个。

      this

      1. 访问当前类的成员

        this.成员变量;
        this.成员方法;
        
        1. 访问当前类的构造方法

          this(...) 当前类的构造方法
          

          this()构造方法在调用时不能形成闭合。

          this(…)调用时也必须是构造方法的第一个语句,唯一一个。

          super(…)和this(…)两种构造方法调用时,不能同时使用。

继承的特点
  1. java语言只支持单继承,不支持多继承

  2. Java语言只支持多级继承(继承体系)

  3. 顶层父类是Object类,所有的类默认都继承Object类

  4. 子类和父类是一种相对概念。

抽象类
	##### 		概述

​ 父类当中的方法,被他的子类们重写,子类的各自实现又不一样。那么父类的方法声明和方法体,只有声明还有意义,而方法体内容则没有存在的意义。我们把这种没有方法体内容的方法称为抽象方法。Java语言规定,如果一个类包含了抽象的方法。那么该类就是一个抽象类

定义:

​ 抽象方法:没有方法体的方法

​ 抽象类:包含抽象方法的类

abstract关键字的使用格式
	###### 			抽象方法

​ 使用abstract关键字修饰成员方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。

   ######            定义格式:
修饰符   abstract 返回值类型  方法名(参数列表);

示例代码:

public abstract void run();
// 吃饭的抽象方法
public abstract void eat();
// 动物跳跃的抽象方法
public abstract void jump(); 
抽象类

​ 如果一个类包含了抽象方法,那么该类就是一个抽象类。

定义格式:

修饰符 abstract class ClassName {
   }

示例代码:

public abstract class Animal {
   
    // 奔跑的抽象方法
    public abstract void run();
}
抽象的使用

​ 继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为一个抽象类。

注意事项

​ 关于抽象类的使用,需要注意的事项:

  1. ​ 抽象类不能创建对象,如果创建对象,编译无法通过。只能创建其非抽象子类的对象
  2. ​ 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。
  3. ​ 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
  4. ​ 抽象类的子类,必须重写父类中的所有的抽象方法,否则编译无法通过,除非该子类也是抽象类。

学习目标

  • ​ 写出定义接口的格式
  • ​ 写出实现接口的格式
  • ​ 说出接口中的成员的特点
  • ​ 能够说出使用多态的前提条件
  • ​ 理解多态的向上转型
  • ​ 理解多态的乡下转型
  • ​ 能够使用多态和接口完成相应的案例开发。
接口
	##### 		概述

​ 接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是【封装了方法】,包含了抽象方法(JDK1.7及以前),默认方法和静态的方法(JDK1.8),私有方法(JDK1.9)

​ 接口的定义,它与类的定义很相似,但是使用interface关键字,他也会被编译生成class文件,但一定要明确他并不是类,而是另外一种引用数据类型。

引用数据类型:类、数组、接口。

接口的使用,不能直接创建对象,但是可以被实现(implements关键字,类似于被继承),一个实现接口的类(可以看做是接口的子类),需要重写接口中的所有的抽象方法,创建该类对象,就可以调用方法了。

接口的定义格式:
public interface 接口名称{
   
    // 抽象方法   为主
    // 默认方法
    // 常量
    // 静态方法
    // 私有方法(JDK1.9)
}

含有抽象方法

​ 抽象方法:使用abstract关键字修饰,没有方法体内容,该方法主要是供子类使用的

public interface InterfaceName {
   
    public abstract void method();
    // public abstract 可以省略不写
}

含有默认方法和静态方法

​ 默认方法:使用default关键字修饰的方法,不可省略,供子类调用或者子类重写。

​ 静态方法:使用static关键字修饰的方法,供接口直接调用。

含有私有方法和私有静态的方法

​ 私有方法:使用private

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值