学习Java笔记---Java面向对象

Java面向对象

关键字

return-用于方法中

权限修饰符

  • private
  • 缺省
  • protected
  • public

package

instanceof

  • 判断对象a是否是类A的实例

import

this

  • 属性
  • 方法
  • 构造器

super

  • 属性
  • 方法
  • 构造器

static

静态结构前面省略的都是类

  • 属性

    • 静态属性
      • 每个对象都共享同一个静态变量,当通过某一个对象修改该变量时,其他对象的静态变量也随之修改。
      • 1、静态变量随着类的加载而加载,其早于对象的创建
        2、由于类只会加载一次,则静态变量在内存中也只会存在一份:存在方法区的静态域中。
        3、一般常量定义为static,以及所有对象共享的属性定义为static
    • 非静态属性(实例属性)
      • 不同的对象独立拥有属于自己的一套非静态属性,修改该属性不会影响其他对象的属性值。
  • 静态方法

    • 随着类的加载而加载
    • 静态方法中只能调用静态方法和属性,非静态方法中,既可以调用静态方法和属性也可以调用非静态方法和属性
    • 在静态方法内,不能使用this、super关键字
    • 工具类中的方法,习惯上声明为static,例如:Math(类中的各种方法,sin、cos等)、Arrays(sort等)
  • 代码块

  • 内部类

  • 单例模式:饿汉式VS懒汉式

    • 应用场景:网站的计数器、应用程序的日志应用、数据库连接池、读取配置文件的类等

final

  • 最终的,可以修饰类、方法、变量

  • 修饰类:此类不能被其它类所继承。比如:String类、System类、StringBuffer类

  • 修饰变量(此时变量为常量)

    • 属性

      • 显示初始化
      • 代码块中初始化
      • 构造器中初始化
      • static final 修饰属性:全局常量
    • 局部变量

      • 修饰方法体中的变量时此时就为常量
      • 修饰形参时,表明此形参是一个常量,当调用此方法时,给常量形参赋给一个实参,一旦赋值后,就只能在方法体中使用此形参,但不能进行重新赋值。
  • 修饰方法:此方法不能被重写,比如:object类中个体Class()方法

    • static final 修饰方法,表示不能重写且只能通过类进行调用。

abstract(抽象的)

  • 只能修饰类或者方法

  • 抽象类

    • 此类不能实例化
    • 抽象类中一定会有构造器,便于子类实例化时调用
    • 开发中,提供抽象类的子类。
  • 抽象方法

    • 包含抽象方法的类一定是个抽象类
      抽象类中可以没有抽象方法

    • 抽象方法只有方法的声明,没有方法体

    • 抽象方法必须被重写

      • 子类重写父类中所有的抽象方法

        • 子类可以实例化
      • 子类没有重写父类(直接父类+间接父类)中所有的抽象方法

        • 子类也是一个抽象类用abstract修饰
    • abstract不能修饰私有方法、静态方法、final方法、final类;
      不能修饰属性、构造器等结构

interface

  • 接口-多实现-作用:可以弥补单继承的局限性

  • 如何定义接口

    • JDK7之前

      • 只能定义全局变量和抽象方法
      • 全局常量:public static final,书写时可以省略不写。
        抽象方法:public abstract,也可以省略
    • JDK8

      • 除了定义全局变量和抽象方法,还可以定义静态方法、默认方法(default)。

      • 接口中定义的静态方法只能通过接口去调用

      • 通过实现类的对象,可以调用接口中的默认方法

        • 如果实现类重写了接口中的默认方法,调用时,仍然调用的是重写以后的方法。
      • 如果子类继承的父类和实现的接口中声明了同名同参数的默认方法,如果子类(实现类)在没重写此方法的情况下,默认调用父类的方法。-- 类优先原则

      • 如果实现类实现多个接口,多个接口中声明了同名同参数的默认方法,如果实现类在没重写此方法的情况下,则会报错。
        实现类必须重写此方法–接口冲突

    • 接口中不可以定义构造器,意味着接口不可以实例化。

    • 类实现(implements)接口

      • 实现类覆盖了接口中的所有抽象方法,实现类可以实例化

      • 实现类没覆盖接口中所有的抽象方法, 实现类为一个抽象类

    • 创建实现类的对象

      • 非匿名实现类的非匿名对象

        • Flash f = new Flash();
      • 非匿名实现类的匿名对象

        • new Flash ()
      • 匿名实现类的非匿名对象

        • USB phone = new USB(){ 重写抽象方法};
      • 匿名实现类的匿名对象

        • new USB(){ 重写抽象方法}
  • 接口与接口之间可以继承,而且可以多继承

  • 接口具体使用体现了多态性
    只要实现了某个接口的实现类,在方法定义的形参上定义接口形式,就可以new实现类的对象,USB usb = new Flash();

native

  • 表示调用底层的c、c++代码

三大特性

封装

  • 权限修饰符

    • public
    • protected
    • 缺省
    • private

继承

  • extends

    • this、super

多态

  • 只针对方法、编译左边,运行右边

    • instanceof
  • interface-接口体现多态性

常用类

object

  • 所有类的直接或间接父类
  • equals()
  • toString()

包装类

  • Byte
  • Short
  • Integer
  • Long
  • Float
  • Double
  • Boolean
  • Character

类和类的成员

属性

  • 属性赋值

    • 1、默认初始化
    • 2、显示初始化
    • 3、代码块中赋值
    • 4、构造器中初始化
    • 5、有了对象之后,对象.属性、对象.方法进行赋值

方法

  • main()的使用说明

    • 程序的入口
    • 是一个普通的静态方法
    • 静态方法只能调静态结构,所以在main中调用非静态方法的时候只能采用创建对象调用非静态方法。
    • 形参可以作为与控制台交互的方式(原来是Scanner)
  • 权限修饰符

    • public
    • protected
    • 缺省
    • private
  • 返回值

    • 有返回值-return
    • 无返回值-void
  • 形参

    • 重载
  • 修饰符

    • static、final、abstract、native
  • 继承

    • 重写
  • 接口

    • 实现

构造器

  • 创建对象

代码块(初始化块)

  • 形式:{}两个大括号
    修饰:只能用static

    • 静态代码块

      • 内部可以输出语句
      • 随着类的加载而执行,而且只执行一次
      • 作用:初始化类的信息
      • 一个类中定义了多个静态代码块,则按照声明的先后顺序执行
      • 静态代码块的执行优先于非静态代码块
      • 只能调用静态属性、静态方法。
    • 非静态代码块

      • 内部可以输出语句
      • 随着对象的创建而执行,创建一个对象则执行一次
      • 作用:在创建对象时,初始化对象的信息
      • 一个类中定义了多个非静态代码块,则按照声明的先后顺序执行
      • 能调用静态属性、静态方法、非静态属性、非静态方法。
  • 作用:用来初始化类、对象的信息

内部类

  • Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B就是外部类。

  • 分类

    • 成员内部类-静态、非静态

      • 作为外部类的成员

        • 调用外部类的成员

          • 属性:外部类名.this.属性
            方法:外部类名.this.方法()
        • 可以被static修饰

        • 可以被4中不同的权限修饰

      • 作为一个类

        • 类内可以定义属性、方法、构造器
        • 可以被继承,也可以被final修饰,表示此类不可以继承
        • 可以被abstract修饰
      • 如何创建成员内部类的对象

        • 静态

          • 外部类名.内部类名 名称 = new 外部类名.内部类名();
        • 非静态

          • 外部类名 外名 = new 外部类名();
            外部类名.内部类名 名称 = 外名.new 内部类名();
    • 局部内部类-方法内、构造器内、代码块内

      • 一般在方法的返回值为接口时,需要返回接口的实现类的对象—匿名实现内部类的匿名对象

      • 在局部内部类的方法中,如果调用局部内部类所声明的方法中的局部变量时,要求该变量定义为final的。

      • 先继承父类再实现接口

变量

成员变量

  • 实例变量
  • 类变量

局部变量

  • 形参
  • 方法局部变量
  • 代码块局部变量
    这是我自己写的思维导图,觉得不错的可以找我要哈!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值