5

Java基础学习总结笔记

 3 years ago
source link: http://www.cnblogs.com/Olenz/p/14289284.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Java基础

Java常用内存区域

  1. 栈内存空间:存储引用堆内存空间的地址
  2. 堆内存空间:保存每个对象的具体属性内容
  3. 全局数据区:保存static类型的属性
  4. 全局代码区:保存所有的方法定义

修饰符

权限修饰符

5

修饰符 同一个类中 同一个包中子类无关类 不同包的子类 不同包的无关类 private √ 默认 √ √ protected √ √ √ public √ √ √ √

状态修饰符

this关键字

  1. 表示该类的属性变量:this.变量名

  2. 调用本类的构造方法:this()

  3. 表示当前类,可调用成员方法:this.成原方法名()

static关键字

  1. 声明属性:使之独立于对象,成为全局属性(亦称静态属性)
  2. 声明方法:使之成为"类方法",可直接通过类名调用:<类名>.<方法名>()
  3. 静态成员方法只能访问静态的成员变量或方法

final关键字

  1. final声明的类不能有子类
  2. final声明的方法不能被子类覆写
  3. final修饰的变量
    1. 基本类型:修饰 数据值 ,不能被改变
    2. 引用类型:修饰 地址值 ,地址不可以被改变,地址指向的数据可以改变

继承

  1. 访问父类的成员变量:super.变量名

    1. 关键字 访问成员变量 访问构造方法 this this.成员变量
      访问本类成员变量 this()
      访问本类构造方法 super super.成员变量
      访问父类成员变量 super()
      访问父类构造方法
    2. 通过子类对象访问一个方法

      1. 先在子类范围内寻找
      2. 再在父类范围寻找
  2. 子类中所有构造方法被调用时,默认都会先访问父类无参构造方法

    1. 因为子类会继承父类中的数据,可能还会使用父类中的数据。所以子类初始化之前,一定要先完成父类数据的初始化
    2. 每一个子类构造方法的第一条语句默认都是super()
    3. 若使用父类带参构造方法进行数据初始化,即super()
    4. 若父类中没有无参构造方法,只有带参构造方法
      1. 用super关键字去显示的调用父类带参构造方法
      2. 在父类中自己提供一个无参构造方法
  3. 方法重写

    1. 子类出现了和父类中一模一样的方法声明

    2. 应用

      1. 当子类需要父类的功能,而功能的主体子类又自己特有的内容时,可重写父类中的方法,这样即沿袭了父类的功能,又定义了子类特有的内容。

      2. 重写的方法中,可擅用super关键字沿袭父类的(基础)功能

      3. 课用@Override检测重写方法是否有误

      4. 注意事项

        1. 父类中的private方法无法被子类继承,则无法被重写

        2. 子类方法访问权限不能更低

          (public>默认>protected>private)

    3. Java继承的注意事项

      1. 一个子类只能单继承,不支持多继承
      2. 可实现多层继承

多态

  1. 在Java中主要有两种体现形式:

    1. 方法的重载与覆写(重写)
    2. 对象的多态性
  2. 成员访问特点:(为何两种不一样:成员方法有重写)

    1. 成员变量:编译与执行均看左边
    2. 成员方法:编译看左边,执行看右边
  3. 优弊

    1. 优势:提高了程序的扩展性

      ​ 具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作

    2. 弊端:不能使用子类的特有功能

  4. 转型(实现使用子类特有功能)

    1. 向上转型:从子到父,父类引用指向对象

    2. 向下转型:从父到子,父类引用转为子类对象

      用强制类型转换实现执行子类特有方法(不占用新的堆内存)

抽象类

  1. 概述:

    在Java中,一个没有方法体的方法应该定义为 抽象方法 ,而类中如果有抽象方法,该类必须定义为 抽象方法

  2. 特点

    1. 抽象类和抽象方法必须用abstract关键字修饰

    2. 抽象类中不一定有抽象方法,由抽象方法的类一定时抽象类

    3. 抽象类不能直接实例化

      如何实例化:参照多态的方法,通过子类对象实例化,这叫做 抽象类多态

    4. 抽象类的子类

      要么重写抽象类中的所有 抽象方法

      要么本身就是抽象类

  3. 抽象类成员特点

    1. 成员变量:变量/常量

    2. 构造方法:

      不可直接实例化。

      用于子类访问父类数据的初始化

    3. 成员方法:

      可以有抽象方法:限定子类必须完成某些动作

      也可以有非抽象方法:提高代码的复用性

  4. 抽象类名作为形参和返回值

    1. 方法的形参时抽象类名,其实需要的时该抽象类的子类对象
    2. 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象

接口

  1. Java中的接口更多的体现在对 行为的抽象

  2. 声明接口关键字:interface

    public interface <接口名>;

    调用接口关键字:implements

    public class A implements <接口名>;

    接口是abstract的,亦不可直接实例化

  3. 接口多态

    1. 多态的形式:具体类多态, 抽象类多态接口多态
    2. 多态的前提:
      1. 有继承或者实现关系;
      2. 有方法的重写/覆写
      3. 有父类/父接口引用指向子/实现类对象
  4. 成员特点

    1. 成员变量:默认被public static final修饰
  5. 构造方法

    ​ 接口无构造方法,因为接口主要是行为进行抽象的

    ​ 一个类如果无父类,默认继承自Object类

  6. 类和接口的关系

    ​ 一个 接口 可以implements多个接口

  7. 抽象类和接口的关系

    1. 成员区别

      抽象类 变量,常量;有构造方法;有抽象方法也有非抽象方法 接口 常量;抽象方法

      2.关系区别

      类与类 只能extends一个父类 类与接口 可以implements多个接口 接口与接口 同上

      3.设计理念区别

      抽象类 对象抽象(属性,行为) 接口 主要对行为抽象
  8. 接口名作为形参和返回值

    1. 方法的形参是接口名,其实需要的是该接口的实现类对象
    2. 方法的返回值是接口名,其实返回的是该接口的实现类对象

内部类

  1. 访问特点

    1. 内部类可直接访问外部类的成员,包括private
    2. 外部类要访问内部类成员,必须创建对象调用
  2. 成员内部类

    1. 当内部类权限为public时:

      外界使用内部类格式(外部类名.内部类名):

      例:Outer.Inner oi = new Outer().new Inner();

    2. 当内部类权限为private时:

      类似于构建getAge和setAge方法。

  3. 局部内部类

    1. 定义在方法内,外界无法直接访问,需要在方法内部创建对象并使用

    2. 该类可直接访问外部类的成员,也可访问方法内的局部变量

    3. 匿名内部类

      1. 前提:存在一个类或接口,类可以时具体类也可抽象类

      2. 格式:

        new 类名或接口名() {
        	重写方法;
        }
      3. 本质:

        是一个继承了该类或实现了该接口的子类匿名对象

      4. 用例:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK