抽象类及接口

目录

一、抽象类和抽象方法

二、接口

一、抽象类和抽象方法

  1. 抽象类无法实例化,无法创建对象。因为抽象类是类和类之间共有的特征,将这些具有共同特征的类再进一步抽象形成了抽象类,由于类本身是不存在的,所以抽象类无法创建对象。抽象类和抽象类实际上可能还会有共同特征,还可以进一步抽象。

  2. 类与类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类。类本身是不存在的,所以抽象类无法创建对象【无法实例化】,所以抽象类是用来被子类继承的,子类可以继承抽象类,可以实例化对象。类到对象是实例化,对象到类是抽象

  3. 抽象类属于引用数据类型

  4. 语法:【修饰符列表】abstract class 类名{ 类体; }

  5. final与abstract不能联合使用,这两个关键字是对立的;

  6. 抽象类可以有成员变量、成员方法及构造方法,构造方法供子类使用

  7. 抽象类可以有抽象方法,也可以没有,但有抽象方法的一定是抽象类

  8. 抽象方法表示没有实现的方法,没有方法体的方法【即没有花括号】,它以分号结尾,用abstract修饰

  9. 一个非抽象类继承抽象类,子类必须将从父类继承过来的方法进行覆盖/重写【可称重写过程为实现】。而抽象类继承抽象类,子类可以不进行方法覆盖/重写

package com.two.me;
​
public class AbstractTest01 {
    public static void main(String[] args) {
//        new Animal();报错,无法实例化
        Animal a = new Cat();//new不了Bird
        a.move();
    }
}
//抽象类
abstract class Animal{
//    public void move();抽象类中必须是抽象方法
    public abstract void move();
}
//class Bird extends Animal{  }报错:Bird不是抽象的, 并且未覆盖com.two.me.Animal中的抽象方法move()
//一个非抽象类继承抽象类,子类必须将从父类继承过来的方法进行覆盖/重写
class Cat extends Animal {
    public void move() {//进行实现无错
        System.out.println("Cat!");
    }
}
abstract class Bird extends Animal{
    public void move() {//要去掉abstract
        System.out.println("Bird!");
    }
}

二、接口

  1. 接口是引用数据类型,编译之后是一个class文件。接口是完全抽象的

  2. 语法:interface 接口名。interface是定义接口用的

  3. 接口支持多继承,接口中只能包含常量和抽象方法,接口中的方法只能是抽象方法,不能有方法体,就是不能有花括号

  4. 接口中的抽象方法的 public abstract 可以省略,并且接口的所有元素是用public修饰的

  5. 接口中的常量用 public static final 修饰,且其可省

  6. 接口没有构造器,不能构造方法。接口也不能实例化对象

  7. 接口是抽象类,而抽象类不一定是接口

  8. 类和类之间叫继承,类和接口之间叫实现

  9. 当一个非抽象的类实现接口时,必须将接口中所有的抽象方法都实现

  10. 一个类可以同时可以实现多个接口

  11. 经测试,接口与接口没有继承关系也可以进行强转,

package com.two.me;
​
public class InterfaceTest01 {
    public static void main(String[] args) {
        System.out.println(Math.PI);//访问PI
//        Math.PI = 1;无法为最终常量分配值
        //接口随便定义一个变量都是常量
    }
}
interface Math {
    double PI = 3.14159258;
    int sum(int a,int b);
    int sub(int c);
}
interface B {
​
}
//一个接口可以继承多个接口
interface C extends Math,B {
​
}
abstract class MyMath implements Math {
    //去掉abstract后,报错:要添上abstract或者实现sub方法
    public int  sum(int a,int b){//不要忘记修饰符public
        return a+b;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
类、对象、继承、抽象类接口是面向对象编程中的重要概念,它们都是用来组织和管理代码的工具。 1. 类:类是对象的模板,它定义了对象的属性和方法。通过类可以创建多个对象,这些对象具有相同的属性和方法。例如,一个人类可以定义为一个类,它包含了人的属性(姓名、年龄、性别等)和方法(走路、吃饭、说话等)。 2. 对象:对象是类的实例,它具有类定义的属性和方法。通过对象可以访问类中的方法和属性,实现对数据的操作。例如,通过一个人类可以创建多个人对象,每个人对象都有自己的属性和方法。 3. 继承:继承是指一个类可以从另一个类中继承属性和方法。被继承的类称为父类或基类,继承的类称为子类或派生类。子类可以拥有自己的属性和方法,也可以重写父类的方法。例如,一个学生类可以继承自人类,它拥有人类的属性和方法,同时也可以有自己的属性和方法。 4. 抽象类抽象类不能实例化的类,它只能被继承。抽象类中可以定义抽象方法,这些方法只有方法签名,没有具体的实现。子类必须实现抽象方法才能被实例化抽象类通常用于定义接口或规范。例如,动物类可以定义为一个抽象类,它包含了动物的属性和抽象方法(如行动、吃饭等),具体实现由子类完成。 5. 接口接口是一种特殊的抽象类,它只包含抽象方法和常量。接口中定义的方法没有具体的实现,而是由实现接口的类来实现。一个类可以实现多个接口,实现了接口的类必须实现接口中定义的所有方法。接口通常用于实现多态性和解耦。例如,飞行接口可以定义飞行方法,实现了这个接口的类就可以飞行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值