数组详解

数组详解

数组就是同一类型元素数据的有序集合。

  • 相同类型的若干个数据
  • 按照一定顺序排列的有序组合
  • 每个数据称为一个数组元素,每个数组元素可以通过一个下标进行访问。

数组中一个重要的类是Arrays ,它有很多方法。

面向对象编程(OOP)

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

抽象:把类似的类或方法整理到一起

三大特性:

  • 封装:将方法实现后,装起来,开放一个接口被其他需要的地方调用。
  • 继承:继承某个父类方法,并实现它的方法。
  • 多态:执行同一个方法,得到的结果或类型是不同的,多种状态。
Class 为类

方法的定义:

修饰符 返回值类型 方法名称(参数类型 形参){ 方法体}

break :出循环,结束循环

return :返回结果

静态方法和非静态方法
  1. 静态static 方法调用其他类中的静态方法,可以直接调用

    public static void main(String[] args){
        Study.Yingyuke();//Study是其他类,Yingyuke是方法
    }
    
  2. 静态方法static 方法调用其他类中的非静态方法,必须先进行实例化,级 new

    public static void main(String[] args){
        new Study().Yingyuke();//Study是其他类,Yingyuke是方法
    }
    
  3. 被static 修饰的方法,类加载了,static方法就被加载了,非static方法只有被实例化后才被加载。

    程序启动后用static修饰的方法就会被加载,被其他方法直接调用,不用再被实例化(new)才能使用。

值传递和引用传递
值传入方法后,值是不会变得。//值传递(他是具体的东西)
引用类型传入方法后,值会改变。//引用传递(他是抽象的,并不是具体的什么东西)

、、类是抽象的,需要被实例化,实例化后可以有一个自己的对象了。这个对象就是一个具体的实例。抽象就好比是一个模板。

构造器(构造方法)

一个类中即使什么都不写,默认也会有一个空的构造方法,无参构造器。和类名相同,没有返回值。

作用:

  • new一个方法的时候本质是在调用构造器。
  • 用来初始化值。
  • 类中定义有参构造,必须定义无参构造。
创建对象内存分析
  • 方法区:方法被加载到这。

  • main方法执行,在“栈”中创建了一个引用变量(new出来的变量 dog);

  • dog 的具体实现内容在“堆”中创建,计算、、等操作;

    (1)栈:主要是一些方法或是对象的引用名;

    (2)堆:是具体操作的过程

小结1
  • 类是一个模板(抽象的),对象是一个具体的实例(具体的);
  • 方法:定义,调用
  • 对象的引用:引用类型–基本数据类型(8种);对象是通过引用来进行操作的。
  • 属性(字段/变量):默认初始化:修饰符 属性类型 属性名 = 属性值
  • 对象的创建和使用:
    • 必须使用new 关键字构造对象,构造器 P p = new P();
    • 对象的属性调用 p.name
    • 对象的方法调用 p.eat()
  • 类:静态的属性,动态的行为

三大特性

  1. 封装:提高程序的安全性,保护数据,隐藏代码实现细节,统一接口,维护性更高;具体的实现和类型都用私有的进行定义,不被外部发现。

    把具体实现包装起来(高内聚、低耦合),只留给一个调用的接口。封装多对于属性而言,操作属性都需要通过public的get/set进行数据操作。

    属性私有化

  2. 继承 关键字:extends 说明:子类是父类的扩展
    • Java只能是单继承,默认或直接的所有类都会继承Object类

    • super 和 this
      public class aa extends bb{
          private name = "zhegeren";
          public void test(String name){
              name //调用test方法传入的参数值
              this.name //当前这个类中定义的name参数值
              super.name //来自继承父类bb中定义的name参数值
          }
      }
      

      super 调用父类的构造方法,必须是构造方法的第一个;

      super 必须只能出现在子类的方法或构造方法中;

      super和this 不能同时出现在构造方法中;

      • this 本身调用这个对象
      • super 代表父类对象的应用,只能有继承时才能使用
      • this() 本类的构造
      • super() 父类的构造
  3. 方法的重写,和重载是不同的

    需要有继承关系,子类重写父类的方法

    参数列表必须相同

    修饰符:范围可以扩大不能缩小

    抛出异常:可以缩小范围,不能扩大范围

    重写,子类的方法和父类必须要一致,方法体可以不同;

    父类的功能,子类不一定需要,或者不一定满足。

    子类没有重写,就调用父类的方法,子类重写了父类方法就会调用子类的。,前提是都new的子类,但是属性类型是父类。

  4. 多态:动态编译(类型)可扩展性

    多态是方法的多态,属性没有多态

    父类和子类有联系,同类型的 ClassCastException 类型转换异常

    存在条件,继承关系,方法需要重写;父类引用指向子类对象

    ​ static方法属于类,他不属于实例,不能被重写

    ​ final 常量不能被重写

    ​ private 修饰的不能被重写

  5. instanceof 和 类型转换
    • person instanceof Object //true 前面的是否是后面的子类

    • 父子类,低转高可以直接转换,高转低需要强制类型转换

      父类引用指向子类的对象

      把子类转换为父类,向上转换

      把父类转换子类,向下转换,强制转换

      方便方法的调用,减少重复的代码

  6. static详解
    • 修饰变量,静态变量

    • 修饰方法,静态方法

    • 静态代码块,类中定义

      static {
          //创建对象时直接加载,只会执行一次 用于赋值
      }
      
  7. 抽象类 abstract 修饰的就是抽象的

    它只是一个约束,不能被 new出来,不能实例化,它可以被继承。被继承后重写其方法

    这个基本不适用

  8. 接口 interface 只有规范,自己无法写方法,专业的约束,和实现分离,面向接口开发。

    接口中的所有定义其实都是公共抽象的 public abstract

    利用接口可以实现多继承

    public class UserServiceImol implemetns UserService,RoleService
    
    • 约束
    • 定义一些方法,让不同的人实现
    • 接口不能被实例化,接口中没有构造方法
    • implements可以实现多个接口
    • 实现类必须要重写接口的方法
  9. 内部类,类内部再定义一个类

学习来源,狂神说 点击进入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值