Java中抽象类abstract和接口interface的定义

本文深入探讨了面向对象编程中的抽象类、接口以及三大特性(继承、封装、多态),并详细解释了向上转型与向下转型的概念。同时,介绍了内部类的使用场景,并概述了Java API的重要性和常用包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、抽象类


    什么是抽象类?
      1.有abstract修饰的类就是抽象类
         1)有抽象方法的类一定是抽象类,抽象类不一定有抽象方法
         2)有构造器,但是不能实例化。
         3)抽象方法的关键字不能省略
      2.接口是特殊的抽象类,关键字是interface
        1)如果有方法,一定都是抽象方法*
        2)如果有属性,一定都是常量*
        3)没有构造器,不能实例化*
      3. 强调:有抽象方法的类一定是抽象类,
                但是抽象类中不一定要有抽象方法
      4. 抽象类可以被继承:如果子类是一个普通的类,那么应该
                重写父类的抽象方法,写出{} 
                如果子类是抽象类,符合抽象类的特点即可。 


二、接口:interface


      特殊的抽象类,
    特殊在:如果有方法,一定是抽象方法,abstract关键字可以省略
        如果有属性,一定是常量,
        常量的修饰词:public static final 可以省略不写 
        常量的名字全都大写。
        没有构造器,不能实例化
        接口其实是一种协议,标准.



三、面向对象的三大特征:


       【继承,封装,多态】
    继承的好处:可以不用修改一个类,利用继承的特点,可以
          扩展这个类,生成一个子类,有利于二次开发
    封装的好处:提高代码的重用性,减少冗余,减少代码的可见性,相对
          安全。
    多态:
      1. 对象的多态?
        不同父类型的引用指向同一个对象,会有不同的行为功能。
        如: 当这个人处在公司时,只能有在公司的某些行为
              同一个人在家时,只能有在家的某些行为 
      2.变量的多态?
        同一个变量指向不同的对象时,会有不同的行为。


四、向上造型                                               父类            子类
    1.父类型的变量指向子类型的对象 Aoo a=new Boo()
      1)在编译期间,变量调用的方法是父类型中的。
      2)运行期间,如果调用的方法是子类重写的,那么一定是调用子类的方法;
           如果没重写,那么调用的是父类中的方法
    2.变量调用的属性:一定是父类中的属性 ** 

四)向下转型
     1)将父类型的变量所指向的对象,转换成子类型的变量
                Aoo a=new Boo();//上
                Boo b=(Boo)a; 下
          有可能会出现 ClassCastException异常 
                Aoo a=new Coo();
                  Boo b=(Boo)a;
         为了避免这种情况发生,需要使用instanceof进行判断
    2)判断变量所指的对象是不是某一类型
    上述代码应该改成:
               Aoo a=new Coo();
              if(a instanceof Boo){ 
                   Boo b=(Boo)a;
               }
        编译期间:javac.exe只检查代码的语法是否正确


五)内部类
    1.概念:在类内部定义的类型,就叫内部类

    2.分类

      1)成员内部类:在类内部定义的,与方法并列的,是外部类的成员
      2)匿名内部类:没有名字,在方法中使用的
              可以创建接口的匿名子类
              可以创建抽象类的匿名子类
              可以创建普通类的匿名子类
             Foo foo=new Foo(){
                  //重写方法
                   public void run(){}
                };
六、API:(application programming interface)
    应用重写编程接口,就是开发文档
    javaAPI内,包含了大量已经开发好的功能(被封装到类
    含有常用的API(字符串操作,集合操作,IO流
    常用的包:
    java.lang包:内部含有常用的类型,不需要导入包,可
    java.util包:常用的类型,Scanner,日期Data,Canle
    java.net包:socket套接字符等
    java.io:输入输出流等
    java.math:math类

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值