java中的抽象类和接口详解

抽象类:

什么是抽象类:

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类特点:

1.抽象类用abstract修饰;
2.抽象类不能够实例化对象。
3.抽象方法必须在抽象类中,抽象类中可以没有抽象方法;
4.抽象方法没有方法体。
Parent类:

public abstract class Parent {
    public abstract void called();
}

Parent测试类:

//以下代码会报错
public class ParentDemo {
    public static void main(String[] args) {
        Parent p = new Baby();
    }
}

如果要用抽象类创建实例化对象,只能够通过多态的方式间接实例化:
父类:

public abstract class Parent {
    public abstract void eat();

}

子类:

public class Baby extends Parent {
    @Override
    public void eat() {
        System.out.println("宝宝要吃饭");
    }
}

测试类:

public class Demo {
    public static void main(String[] args) {
        Parent p = new Baby();
        p.eat();

    }
}

抽象类成员特点:

抽象类中可以存在以下特点:

public abstract class Parent {
//成员变量
    private int age=48;
//构造函数(有参,无参)
    public Parent(){};
	public Parent(int age){
        
    };
//抽象方法
    public abstract void eat();
//成员方法
    public void work(){
        System.out.println("工作!");
    }
}

接口:

什么是接口:

官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

接口:

public interface Eating {
    public abstract void eat();
}

实现类:

public class Person implements Eating {
    @Override
    public void eat() {
        System.out.println("人吃饭");
    }
}

测试类:

public class Demo {
    public static void main(String[] args) {
        Eating e = new Person();
        e.eat();
    }
}

接口特点:

  1. 用 interface 来定义。
  2. 类用implements来实现接口
  3. 接口中的所有成员变量都默认是由public static final修饰的。
public interface Inter {
	int num0 =0;
    public int num1 =10;
    public static int num2 =20;
    public static final int num3 = 30; 
}

  1. 接口中的所有方法都默认是由public abstract修饰的。
public interface Inter01 {
    void eat01();
    public  void eat02();
    abstract void eat03();
    public abstract void eat04();
}
  1. 接口没有构造方法。
  2. 接口没有构造方法,但是在接口的实现类中却可以调用super(),是因为Object类作为超类,由实现类间接继承了Object类。

接口的各种关系

  1. 接口和接口之间是继承关系,并且可以多继承
public interface Inter extends Inter01,Inter02{
}
  1. 接口和类是实现关系,可以多继承
public class InterImpl implements Inter01,Inter02{
}

接口和抽象类的区别

成员变量成员方法设计上
抽象类与普通类一样可以用abstract修饰对类进行抽象
接口默认由public static final默认由public abstract对行为抽象
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值