【无标题】

抽象类和接口

抽象

抽象类的基本概念

普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、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{}

总结

  • 抽象abstract关键字

  • 抽象类的特点

  • abstract能修饰那些结构

  • 抽象方法的特点

  • 接口:JDK7–>JDK8有什么改变

  • 面试题:继承类和实现接口的异同?抽象类和接口的区别

  • 多态的补充说明:

  • 匿名实现类

  • 重点:结合多态,主要是传参,配合instanceof使用

  • 在能够使用多态表示对象的时候,尽量使用多态。

  • 栈和队列

  • 建立在两个最基础的数据结构的基础上构建的两个受限制的线性表。

  • 面向对象四大特征:

  • 封装,继承,多态,(抽象)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值