static关键字

本文详细介绍了Java中的继承机制,包括单继承、类的继承特性以及方法覆盖。接着讨论了多态的概念,如向上转型、向下转型及方法调用。此外,还讲解了final关键字的作用,它用于禁止类的继承、防止方法覆盖以及确保变量的不可变性。最后,探讨了修饰符的访问范围,包括public、protected、default和private的使用场景。
摘要由CSDN通过智能技术生成

static关键字

  1. 什么时候成员变量声明为实例变量?

    • 所有对象都有这个属性,单杀每个属性的值不一样(身份证,名字等)

  2. 什么时候成员变量声明为静态变量呢?

    • 所有对象都有这个属性,并且所有对象的这个属性的值都一样(中国人的国际都是中国)

  3. static

    • static修饰的方法都是静态方法

    • static修饰的变量都是静态变量

    • static修饰的所有元素都是类级别的特征,和具体的对象无关1!

![](C:\Users\Administrator\Desktop\java学习的图片\8A87@N(`GJI55VLK67BS45D.png)

继承

  1. 继承的基本作业是:代码复用,但是继承最重要的作业是:有了继承才有了以后“方法覆盖”和多态机制

  2. 继承语法形式

    • 修饰符列表 class 类名 extends 父类名{

      类体 =属性+方法

      }

  3. java的继承只支持单继承,一个类不能同时继承很多类

  4. 在java语言当中子类继承父类都继承哪些数据?

    • 私有的不支持继承

    • 构造方法不支持继承

    • 其他数据能被继承

  5. 虽然java的继承只支持单继承,但是一个类可以间接继承别的类

    比如 c extends b{

    }

    b extends a{

    }a extends d{

    }

    c继承b,也间接继承a和d

  6. java语言当中所有类都默认继承object类

方法覆盖(重写)

  1. 方法重载又叫voerwite

  2. 什么时候使用方法重写

    • 当父类的方法已经无法满足当前子类的业务需求,子类游戏要江父类中继承过来的方法进行重新编写,这个重新编写的过程叫方法重写

  3. 声明条件满足之后会发生方法重写?

    • 发生在具有继承关系的父子类中

    • 访问权限不能更低,只能更高

    • 抛出异常不能更多,只能更少

    • 重写只针对方法,不针对属性

  4. 方法重写的时候 修饰符,数据类型。方法名都必须一样

多态

  1. 多态涉及到的几个概念

    • 向上转型

      • 子类型--》父类型

      • 又叫自动类型转换

    • 向下转型

      • 父类型--》子类型

      • 又叫强制转型

    • 无论是向上还是向下转型,两种类型之间必须就继承关系

  2. Animal a1 = new cat();// Animal是父类,cat是子类,创建一个animal类型的a1 cat对象,向上转型,子类变成父类
    a1.move();//这是调用的是cat类里面的move方法,并不是animal类中的move方法,且不论cat中的move是否重写,都是调用的cat类中的move方法
  3. 在上面向上转型后的方法调用中,只能调用 原本的父类他子类共有的方法 ,如果是子类特有的方法 就不能

  4. 假设想让以上对象执行catchMouse()方法怎么办?

    • a1是无法直接调用的,因为a1的类型Animal里面没有atchMouse()方法,

    • 我们可以江a1强行转换为cat类型a1的类型animal (父类)转换成cat类型(子类)叫做向下转换

    • 无论是向上还是向下转型,两种类型之间必须就继承关系

      Cat c2 = (Cat)a1;//想下转型,强制转型
  5. Animal a2 = new Bird();//向上转换,子类型到父类型
    ​
    Cat c3 = (Cat)a2;//这种编译是没有问题的,因为a2已经转换到了Animal这种类型,Animal又和cat是继承关系,所以语法合格,但是系统运行的时候会出现异常,因为虽然a2已经是Anima类型,但是他jvm堆内存中依然是bird类型,而bird类和cat没有继承关系,无法转换
  6. 上述异常只会出现在向下转型中,但是如何避免这种异常出现呢使用instanceof运算符

    • 语法格式

      (引用 intstanceof 数据类型名)

    • 以上运算符的执行结果类型是布尔类型,结果只能是ture/false

    • 关于运算结果ture/false:

      假设:(a intstanceof Animal)

      ture表示:

      a这个引用指向的对象是一个Animal类型

      false表示:

      a这个引用指向的对象不是一个Animal类型

final关键字

  1. final修饰的类无法被继承

  2. final修饰的方法无法被覆盖

  3. final修饰的变量一旦赋值之后,不可以在重新赋值

  4. final修饰的引用虽然指向每个对象之后不能指向其他对象,但是所指向的对象的内部的内存是可以改变的

  5. final修饰的引用,一旦指向某个对象之后,不能在指向其他对象

  6. 总和考虑,java语言最终规定实例变量 使用final修饰之后,必须手动赋值,不能采用系统默认值;

    * //第一种解决方案 
    public class FinalTest02{
        
    ​
      final int age = 10;
    ​
    *// 第二章解决方案
    ​
      final int  num;
    ​
      public FinalTest02(){//在构造方法中赋值与第一种方法意义一模一样
    ​
      this.num = 200;
      }
        
      }
    ​
      

final User user = new User(300);//final修饰的引用,一旦指向某个对象之后,不能在指向其他对象
user.id = 50;//final修饰的引用虽然指向每个对象之后不能指向其他对象,但是所指向的对象的内部的内存是可以改变的
​
  1. final修饰的实例变量一般是不可变的,这种变量 一般和static留恋和使用,常量的语法格式为:public static final 类型 常量名 =值;

    //public static final 类型 常量名 =值;    
    static final String country = "中国";

修饰符的范围

  1. public 表示公开的,在任何位置都能访问

  2. protected 同包,子类

  3. 缺省 同包

  4. private 表示私有的,只能在本类中访问

  5. 当某个数据只希望子类使用,使用protected进行修饰

  6. 修饰符的范围:

  7. private《缺省《protected《public

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值