您的位置:首页 > 编程语言 > Java开发

java基础知识总结-封装、继承、多态、接口、抽象类

2018-12-10 15:03 495 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。分享交流qq群:672759013,欢迎加入 https://blog.csdn.net/weixin_39664285/article/details/84940237
  1. 类和接口;类只能单继承;   而接口可以继承接口,可以多继承;
  2. 抽象类和接口的区别: 抽象类可以用abstract修饰;  
  3. 接口:public interface jiekouname(){};接口中的抽象方法只能是public abstract修饰;
  4. 接口中的成员变量只能是public static final 修饰;接口中不能含有static修饰代码块和static修饰的方法
  5. 一个类只能继承一个抽象类,但可以继承多个接口
  6. 记忆:单继承多实现
  1. 接口常用情况: 写个空接口,没有任何抽象方法,仅仅用来标记;
  • 抽象类:
      抽象类可以继承抽象类;类可以继承抽象类,但必须实现抽象方法;抽象类中可以含成员方法,也可含抽象方法;
    1. 抽象方法书写:public abstract void f();  抽象方法中不能用private和static修饰
    2. 抽象类使用场景: 可以将继承抽象类的类实例赋值给抽象类对象,然后调用抽象类的成员变量和成员方法;
  • static 修饰的方法:
      可以用对象点和类名点访问;static修饰属于类,而非static修饰的属于对象;
    1. static只能访问static的变量方法,而非static可以访问static的
    2. static方法不能被覆盖,该类的子类不能有同名同参数的方法
  • 多态定义:同一行为不同状态,同一接口不同实例执行不同操作;
      不同类继承抽象类,然后实现相应方法,当创建某一个类实例时,把它赋给抽象类对象,通过instanceof判断属于哪一类,然后进行类型转换,转换为具体莫一类实例,然后调用该类的方法;
    1. 多态的多种状态分支结构:所有创建的实例赋值给抽象类对象后,判断抽象类对象属于哪一条原型链上,然后把该抽象对象转为具体某一类的实例,然后进行调用相应方法,实现方法任意调用;
    2. 记:通过抽象对象调用同一个方法,然后会执行该类对应的方法;
  • 虚方法:
      使用关键字super便是调用的子类对象重写的父类方法;*不太对
    1. 如果调用父类方法,则需要创建父类对象,进行调用;或super点父类方法名
  • 重写:
      应用场景:子类继承父类,相同方法名放回类型参数列表即为重写;
    1. 条件: static修饰的方法不能重写,可以再次声明;private和final修饰的方法不能重写
    2. 重写后权限不能更低:如父类为public,子类不能为protected
    3. 同一包:可重写除private和final之外的所有;不同包:可重写public和protected的非final
  • super()使用:在子类中用supe点方法名     调用父类方法;
  • 重载:
      方法名同,放回类型,参数列表,修饰符,异常类型不同;
  • 重写与重载区别:重写是子类与父类的多态表现;重载是类的多态表现;
  • 封装:
      用getter和setter方法获取设置类变量,保护数据不被随意修改;
    1. 用private和protected等设置变量权利,保护不能被随意修改
  • 内部类共四种:成员内部类、局部内部类、静态内部类、匿名内部类
  • 成员内部类
      内部类依赖于外部类存在,内部类可以访问外部类的所有资源,无论是private,static等
    1. 内部类有和外部类相同的变量名方法时,会发生隐藏,即:默认访问的是内部类的成员变量和方法。
    2. 外部类要访问内部类变量和方法,只有通过外部类.this.(内部类)成员变量和方法。
    3. 一般是在外部类创建成员方法,返回一个内部类实例,通过调用该方法得到内部类实例,再通过实例可以访问内部类的资源;如果在最外面创建内部类实例则:外部类.内部类 a=外部类实例.外部获取内部类实例的方法     或者 外部实例.new inclass();
    4. 内部类可以有常见的修饰符,private只能在内部类的内部访问;public是所有,protect是同一包中;
  • 局部内部类
      定义:定义在方法中的类,不能有修饰符。像方法中的变量一样;作用域在方法中;
  • 匿名内部类
      常见的就是安卓的监听,在方法中使用new 重写监听方法。匿名内部类使用最多,维护特别方便;
    1. 匿名内部类也是不可以有访问修饰符和static的
    2. 唯一没有构造器的类
  • 静态内部类
      和成员内部类区别在于,多个static;可以不通过对象,直接通过类名进行访问;但内部类只能访问外部中static修饰的变量和方法。static只能掉static,而非static可以调static;也是就说非static属于某一个具体实例,而static属于某一类;
  • 内部类的继承问题
      需要在继承内部类的类的构造方法中加外部类对象.super();
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐