Java——类的简单了解以及类的三大特性

类和对象


类的介绍
  • 对象是类的实例化,类是对象的抽象

  • 可以通过new关键字来实例化一个类

    类名 +  实例名称 = new 类名();
    
  • 类的三大特性

    • 封装
    • 继承
    • 多态
  • 类的构造器也叫做构造方法,实例化的对象可对类的构造器进行调用

    • 一个类即使什么也不写,也会存在一个构造器(构造方法

    • 构造方法的名称必须和类名相同,且无返回值

      在这里插入图片描述

    • 构造器本质是用于给实例化对象初始化

      生成构造器的快捷键:alt + insert

      1.弹出来的窗口选择ok创建 带参的构造器

      2.弹出来的窗口选择取消选择创建 不带参数的构造器


类的封装
  • 高内聚,低耦合

  • private 实现封装(一般来说对属性封装,对方法公开)

    在这里插入图片描述

  • 封装的好处

    1. 提高程序的安全性,保护数据
    2. 隐藏代码的实现细节
    3. 统一接口
    4. 提高系统的可维护性
  • 属性私有,get/set

    一个设置get方法和set方法的快捷键:alt + insert

    弹出来的窗口选择 Getter和Setter


类的继承
  • 继承的本质其实是类的抽象

  • Java只有单继承,没有多继承

    一个父类可以有多个子类,但是一个子类只能有一个父类

  • 关键字 extends:子类(派生类)是父类(基类)的扩展

  • 子类和父类之间是“is a”的关系

  • 子类继承父类,可以继承父类的所有公开属性和方法

    public 公共的

    protected 受保护的

    default 默认的

    private 私有的

  • 在Java中,所有的类都默认直接或者间接继承Object类

  • this与super

    • this用于类里头调用类本身的方法或者属性

    • super用于类里头调用其父类的公开的属性和方法

      super的注意点

      1. super调用父类的构造方法,必须在构造方法的第一行

        在这里插入图片描述

      2. super必须只能出现在子类的方法或者构造方法之中

      3. super和this不能同时调用构造方法(因为this调用构造方法也应该在出现在构造方法的第一行)

        在这里插入图片描述

      4. main方法中调用子类的无参构造函数时,会默认先调用父类的无参构造函数,如果父类没有无参构造函数(比如在父类中声明了有参构造函数,原本系统默认生成的无参构造函数就会被覆盖,此时子类就无法调用其无参构造函数),则子类也无法生成构造函数

  • 重写

    1. 前提:需要有继承关系,且是子类重写父类的方法

    2. 注意事项:

      • 方法名必须相同,方法体不同
      • 参数列表必须相同
      • 修饰符:子类相较于父类范围可以扩大但不能缩小 public>protected>default>private
      • 抛出的异常:子类相较于父类范围可以缩小但不能扩大
    3. 重写的必要性

      • 父类的功能不一定满足子类的需要,或者父类的功能过于多
    4. 快捷键

      alt + insert 选择 方法重写


类的多态
  • 注意事项

    1. 多态是方法的多态,属性没有多态的概念

    2. 父类和子类得有联系,否则会出现类型转换异:ClassCastException!

    3. 一个对象的实例类型是确定的,但是可以指向的引用类型是不确定的。只能由父类的引用指向子类对象!

      Person s1 = new Student();   正确
      Student s2 = new Person();   错误
      
    4. 多态的存在条件:存在继承关系,方法需要重写

      • static方法是属于类的,不属于实例,不能重写
      • final是常量,不能重写
      • private是私有方法,不能重写
    5. 子类重写父类的方法之后,如果在main方法中用父类实例调用方法,将执行子类的方法

  • instanceof关键字

    1. 判断一个对象是什么类型

      x instanceof y

      一般来说,前面的x为一个引用类型的变量,后面的y为一个类或者接口,instanceof用于判断前面的变量是否是后面的类,如果是,结果返回true,否则返回false

    2. 因为引用类型的转换只能在具有继承关系的两个类型之间进行,有时候我们在编译的时候可能没有考虑到这一点,或者我们无法分辨两个类型之间是否具有继承关系,使用instanceof可以帮助我们进行判断,防止出错

      if(obj instanceof String)
      {
          String str=(String)obj;
      }
      
  • 子类与父类的转换

    1. 把子类转换为父类,向上转型(自动转换)

      可能会丢失自己一部分原本的方法

    2. 把父类转换为子类,向下转型(强制转换)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值