java之抽象对象和类与接口的区别

抽象类与抽象方法

抽象方法:由系统关键字abstract修饰的方法,叫抽象方法
抽象方法的特点:
1.抽象方法的实现没有
2.会强制抽象方法所在的类的子类去重写该方法
3.一定只能在抽象方法中
抽象类:由系统关键字abstract修饰的类叫做抽象类
抽象类的特点:
1.抽象类不能实例化对象
2.抽象类的子类一定要重写抽象类中的抽象方法
3.抽象类中可以有成员变量和成员方法,既可以有抽象方法,也可以没有,抽象方法中一定有构造方法的
抽象类是根据多态来用其子类创建对象的

abstract class People         //抽象类
{
    String name;                 //成员变量
  public void sayHi()          //成员方法
  {
    System.out.println("我叫"+name);
  }
    public abstract void eat(); //抽象方法,没有方法的实现
}
class Student extends People
{
            @Override         //抽象方法的重写
    public void eat() {
        System.out.println("吃食堂饭");
    }
}

一般,当我们会把一些无法实现的方法,写成抽象方法放入抽象类中,让其子类来实现.
例如人吃什么饭,这个问题我们不好写实现,就定义为抽象问题,但是其子类学生吃什么饭这个问题就可以实现.
下面关于抽象类和抽象方法,我们思考一下,抽象关键词abstract和哪一些关键字不能一起出现,原因是什么?
1.首先是关键字final:因为抽象方法是没有实现的,会强制子类重写方法,但是final修饰的方法是无法重写的
2.关键字private,这是一个权限修饰符,因为private修饰的方法外界是无法访问的,因此子类是无法对其进行重写的.
3.关键字static,因为static修饰的方法,是可以直接用方法名调用的,但是抽象方法没有方法的实现,是不能调用的.

接口

接口是由关键字interface修饰的叫做接口
接口的特点:
1.接口不能实例化一个对象,谁用接口就要去实现接口中的方法
2.接口中只能有抽象方法,不能有成员方法,并且接口中不能有成员变量,但是可以有常量,接口中是没有构造方法的

interface Fly//接口
{
    public abstract void fly();//需求,抽象方法
}
class Bird implements Fly
{
    @Override
    public void fly() 
    {
        System.out.println("我能飞");
    }
}

类,接口之间的相互关系

类与类之间的关系是继承关系,并且只能单继承或者多层继承
类与接口之间的关系是实现关系,类实现接口,并且可以一个类实现多个接口,但是类中必须要重写所有的抽象方法
接口与接口的关系
例如:

interface X1
{
    public abstract void sayHi();
}
interface X2
{
    public abstract void print();
}
interface X3 extends X2 //接口3继承接口2,连抽象方法也一起继承了,所以实现的时候,X2X3的抽象方法都实现                   
{
    public abstract void count();
}
class P implements X1 , X3  
{
    @Override
    public void sayHi() {

        System.out.println("你好");
    }
    @Override
    public void print() {

        System.out.println("打印");
    }
    @Override
    public void count() {

        System.out.println("数数");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值