javase(三)

面向对象

以类的方式组织代码,以对象的组织(封装)数据

创建

  • //创建类
    修饰符 class 类名{
        成员变量;
        成员方法;
    }
    
  • //创建对象
    使用new关键字创建对象
    //例
    new 类名(参数);
    //调用
    类名.方法(属性)名
    

构造器

构造代码块

  • 写在成员位置的代码块
  • 可以把多个构造方法中重复的代码抽取出来
  • 执行:创建本类对象的时候会先执行构造代码块再执行构造方法

作用

  • new的本质就是调用构造器
  • 初始化对象的值

空参构造器

  • 默认自带无参构造器,写不写都有
  • 初始化对象时,成员变量的数据采用默认值
  • 快速生成无参构造器
    1. alt+insert
    2. .第一个,第二个选项

有参构造器

创建有参构造器后,无参构造器也要创建

  • public 类名(参数){
        结构体
    }
    
  • 初始化对象时,可以给对象进行赋值

  • 快速生成有参构造器

    1. alt+insert
    2. 第一个,全部选择,第一个选项
  • 快速生成set与get方法

    1. alt+insert
    2. 第四个,全部选择,第一个选项
  • 一键生成构造器与setget方法:Ctrl+shirt+逗号(需要安装插件)ptg

this关键字

  • 当有两个相同的名字时,使用局部的变量,如果想要使用全局的变量,需要在前面加上this.

继承

  • extends关键字,可以让一个类和另一个类建立继承关系,享受另外一个类的属性
  • 单继承:一个子类只能继承一个父类,但是可以多层继承
    • 也就是子类继承父类,父类再继承父类的父类
  • 子类只能访问父类中非私有的成员方法,私有的无法访问
  • java所有的类都直接/间接继承object
  • super注意点
    1. super调用父类的构造方法,必须在构造方法的第一个
    2. super必须只能出现在子类的方法或者构造方法中
    3. super和this不能同时调用构造方法

权限修饰符

  • 范围:public>protected>不写>private
    • public可以在不同的包不同类下,不同的包子类下,同包子类下和当前类下使用
    • protected可以在不同的包子类下,同包子类下和当前类下使用
    • 默认不写可以在同包子类下和当前类下使用
    • private仅可以在当前类下使用

方法重写

  • 当父类中的方法不能满足子类的需求时,就可以把这个方法进行重写
    • 加@override进行注解
  • 需要有继承关系时,子类才能重写父类的方法!
    1. 方法名必须相同
    2. 参数列表必须相同
    3. 修饰符可以扩大,但是不能缩小
    4. 抛出的异常可以缩小,但是不能扩大
  • 子类的方法和父类的必须要一致,除了方法体不同
  • private,static,final修饰的方法不能被重写

多态

对象的多种形态

  • 前提:有继承,有父类引用指向子类对象,有方法重写

  • 成员变量:编译看左边,运行也看左边

  • 成员方法:编译看左边,运行看右边

  • 父类类型 对象名 = 子类对象

    • //例
      Person person = new student();
      

static

  • static表示静态,是java中的一个修饰符,可以修饰成员方法,成员变量

  • 被static修饰的成员变量叫做静态变量

    • 被该类所有的对象共享

    • //结构1
      类名.变量名 = 值;(推荐)
      //结构2
      对象名.变量名 = 值;
      
  • 被static修饰的成员方法叫做静态方法

    • 多用在测试类,工具类中

    • //调用结构1
      类名.变量名 = 值;(推荐)
      //调用结构2
      对象名.变量名 = 值;
      
  • 静态方法没有this关键字

  • 静态方法中只能访问静态

  • 非静态方法可以访问所有对象,包括静态方法

  • 工具类

    • 要求类名私有化
  • 静态代码块

    • 用于初始化数据
    • 只会执行一次,并且创建本类的对象的时候会先执行静态代码块再执行构造方法

final

  • final修饰的方法是最终方法,不能被重写
  • final修饰的的类是最终类,不能被继承
  • final修饰的的变量叫常量,只能被赋值一次

抽象类

  • 如果一个类中有抽象方法,那么这个类就要定义为抽象类

  • abstract关键字修饰的方法继承到子类时,子类必须要重写

  • //抽象类定义
    public abstract class 类名{}
    
  • 抽象方法

    • 将共性的行为(方法)抽取到父类之后,由于每个子类执行的内容是不同的

    • 所以在父类中不能确定具体的方法体,该方法就可以定义为抽象方法

    • //抽象方法定义
      public abstract 返回值类型 方法名(参数);
      
  • 注意事项

    • 抽象类不能创建对象
    • 抽象类中不一定有抽象方法,但有抽象方法一定是抽象类
    • 可以有构造方法
    • 抽象类的子类
      • 要么重写抽象类中的所以的抽象方法
      • 要么是抽象类

接口

  • 是一种规则

  • 没有构造方法

  • //定义
    public interface 接口名{}
    

成员变量

  • 只能是常量
  • 默认修饰符是public static final

成员方法

  • 允许接口定义默认方法,需要使用关键字default修饰

    • //格式
      public default 返回值类型 方法名(参数){}
      
  • 默认方法不是抽象方法,所以不强制重写,如果要重写,重写的时候要去掉default关键字

  • public可以省略,default不能

  • public可以省略,static不能省略

  • 如果实现多个接口,多个接口的名字相同的默认方法时,子类就必须对该方法进行重写

  • 静态方法只能通过接口名调用,不能通过实现类名或对象名调用

  • 私有方法

    • //定义
      private 返回值类型 方法名(参数){}
      
  • 私有静态方法

    • //定义
      private static 返回值类型 方法名(参数){}
      

接口和类之间的关系

  • 类与类
    • 继承关系,只能单继承,不能多继承,但是可以多层继承
  • 类和接口
    • 可以单实现,可以多实现,还可以在继承一个类的同时实现多个接口
  • 接口与接口
    • 继承关系,可以单继承也可以多继承

内部类

  • 内部类可以直接访问外部类的成员,私有的也可以

  • 外部类要访问内部类的成员,必须创建对象

  • 成员内部类

    • 外部类.内部类 对象名 = new 外部类.内部类;
  • 静态内部类

    • 外部类.内部类 对象名 = new 外部类.内部类();
    • 调用
      • 外部类名.内部类名.方法名(😉
  • 匿名内部类

    • //格式
      new 类名/接口名(){重写方法};
      

异常

  • 异常指程序运行中出现的各种状况,如:文件找不到,网络连接失败,非法参数等.

  • 异常发生在程序运行期间,它影响了正常的查询执行流程

  • 编译异常处理

    • //方法1
      方法 throws Exception{}
      
      //快捷键:alt+回车或者ctrl+alt+t
      
      //方法2:
      try{
      }catch(参数为想要捕获的异常类型){
          
      }....这里还可以继续写catch
      finally{
          
      }
      //finally可以不要
      //最上面的catch类型要比下面的小
      
  • 自定义异常

    • 编译异常处理
      1. 继承exception
      2. 重写构造器
      3. 在出现异常的地方用throw new 自定义对象抛出
    • 运行时异常处理
      1. 继承RuntimeException
      2. 重写构造器
      3. 在出现异常的地方用throw new 自定义对象抛出
  • 异常打印

    • 日志解析
    • 对象名.printstacktrace(😉
posted @   22-10-21  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示