其他分享
首页 > 其他分享> > 第一组 孙乃宇 7.26 抽象类和接口

第一组 孙乃宇 7.26 抽象类和接口

作者:互联网

抽象类和接口

抽象

抽象类的基本概念

普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。

抽象方法,没有方法体。

抽象方法,存在的意义是什么?

根本意义,约定。自定义的规则 约定大于配置,配置大于编码

抽象方法到底约定了什么,定了哪些规则。

约定了返回值,约定了访问权限,参数列表,需要在重写的时候定义方法体

面向对象特征:抽象

抽象方法必须在一个抽象类中,加一个abstract

public abstract class Animal {}
  1. 当我们定义了一个抽象类,这个抽象类中可以有那些结构

    属性 成员方法 构造器 抽象方法 常量

  2. 抽象类中能不能没有抽象方法?

    抽象类可以没有抽象方法

  3. 抽象类是不能被实例化

    抽象类不能创建对象

  4. 抽象类的构造器存在的意义

    为了约定子类的构造器必须和父类匹配

  5. 一个类如果继承了一个抽象类,就必须重写抽象类的所有的抽象方法

    //定义一个抽象类
    public abstract class Animal{
       public abstract void eat();//定义一个抽象方法
    }
    //定义一个类来继承抽象方法
    public class Cat  extends Abstr01{
       @Override
       public void show() {
           system.out.println("猫吃鱼");
      }
    }
    //继承抽象类要重写抽象类中所有的方法,不然这个类也要声明为抽象类。

    abstract能够修饰什么?

类,方法。

抽象方法能不能用private修饰?不能,开发中抽象方法基本上都是public

抽象方法能不能用final修饰?不能,用final修饰的方法是不允许重写的

抽象类能不能用final修饰?不能,用final修饰的类是不允许被继承的。

总结:

  1. 抽象方法必须是public或者是protected因为如果是private,不饿能被子类继承

    子类便无法实现方法,默认情况下是可以的。默认情况是public

  2. 抽象类是不能被直接实例化,需要靠子类采用向上转型的方法处理。

  3. 抽象类必须有子类,使用extends继承,一个类只能继承一个抽象类

  4. 子类(如果不是抽象类)则必须重写抽象类中的所有方法

    (如果子类没有实现父类的抽象方法)必须将子类也定义为abstract类

接口

java中,除了类,还有抽象类和接口

比抽象类更高级的抽象

抽象类也是比类更高级的抽象

接口的声明:使用interface关键字,public interface ch02

接口中只能定义抽象方法,不能有属性,不能有方法,

可以放静态常量,静态方法

JDK8及以后,接口中也是只能定义抽象方法,不能有属性,可以有默认的方法和静态方法

接口中结构的特点

接口中的方法默认为public abstract 我们推荐就省略了,

接口中的常量默认是 public static final ,我们推荐就省略了

说一句话,接口中的结构必须是public

接口可以被实现,实现类

比如说A类 implements 接口,那么我们就说A是这个接口的实现类

如果一个类实现了一个接口,他就需要重写接口中的所用方法。

实现接口时可以多实现的,继承只能是单继承的

开发中,如果一件事情可以通过继承和实现接口来解决,优先使用接口解决。

案例

//定义了一个接口
public interface Inter01 {
   void eat();//定义了一个方法
}
//定义一个类来实现接口,使用implements关键字
public class Inter01Impl implements Inter01 {
   @Override
   public void eat() {//实现类中重写接口中定义的方法
  }
}
//创建测试类
public class Demo{
   public static void main(String [] args){
       Inter01 inter01=new Inter01Impl();//创建对象
       inter01.eat();//调用对象
  }
}

 

面试题:

1.继承抽象类和实现接口的异同。

2.抽象类和接口的区别。

接口存在的意义?

约定:

多态的前提:

1.继承

2.重写方法

3.父类-->子类,接口-->实现类

面试题:

在java中只有单继承?不对 *接口之间是多继承的

java类与类之间只有单继承

public interface A extends B,C,D{}

总结

###

 

标签:继承,方法,7.26,接口,抽象,抽象类,孙乃宇,public
来源: https://www.cnblogs.com/sunnaiyu/p/16522454.html