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. 用例:


Java基础学习总结笔记的更多相关文章

  1. Java基础学习心得笔记

    对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变.面向过程就是把你的代码封装成函数,然后依次去做一件事情,面向过程是把你要做 ...

  2. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  3. Java基础学习笔记(一)

    Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...

  4. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  5. java基础学习笔记五(抽象类)

    java基础学习总结——抽象类 抽象类介绍

  6. java基础学习总结——开篇

    java是我学习的第一门编程语言,当初学习java基础的时候下了不少功夫,趁着这段时间找工作之际,好好整理一下以前学习java基础时记录的笔记,当作是对java基础学习的一个总结吧,将每一个java的 ...

  7. JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...

  8. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

  9. Java基础学习中一些词语和语句的使用

    在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...

随机推荐

  1. 云服务器 ECS Linux 安装 VNC Server 实现图形化访问配置说明

    阿里云官方公共 Linux 系统镜像,基于性能及通用性等因素考虑,默认没有安装 VNC 服务组件.本文对常见操作系统下的 VNC Server 安装配置进行简要说明. 本文中仅讨论VNC的安装,关于图 ...

  2. 从零开始学生信-orthofinder的安装和使用-基因家族分析

    [环境变量]注释掉conda3,source ~/.bashrc conda install orthofinder # 若在上一章之后没有重启的同学请重启后操作. # 由于是刚开始搭建,这里没有给o ...

  3. Hadoop框架:Yarn基本结构和运行原理

    本文源码:GitHub·点这里 || GitEE·点这里 一.Yarn基本结构 Hadoop三大核心组件:分布式文件系统HDFS.分布式计算框架MapReduce,分布式集群资源调度框架Yarn.Ya ...

  4. 「 洛谷 」P4539 [SCOI2006]zh_tree

    小兔的话 推荐 小兔的CSDN [SCOI2006]zh_tree 题目限制 内存限制:250.00MB 时间限制:1.00s 标准输入输出 题目知识点 思维 动态规划 \(dp\) 区间\(dp\) ...

  5. 思想无语言边界:以 cglib 介绍 AOP 在 java 的一个实现方式

    0. 前言 上接:基于 Source Generators 做个 AOP 静态编织小实验 作为第三篇,我们基于cglib在java做一个简单的aop例子, 以此简单作为例子说一个思路在什么样的语言里面 ...

  6. python线性回归

    一.理论基础 1.回归公式 对于单元的线性回归,我们有:f(x) = kx + b 的方程(k代表权重,b代表截距). 对于多元线性回归,我们有: 或者为了简化,干脆将b视为k0·x0,,其中k0为1 ...

  7. 探究 position-sticky 失效问题

    CSS 的 position 值中,有一个非常有用的值 -- position: sticky,通常会被用于各种吸顶,吸底,吸边的效果中. 如果你对 sticky 还不太熟悉,可以先看看我的这篇文章: ...

  8. JAVA 实体类List<Entity >转 List<Map>

    public static <T extends IdEntity> List<Map<Object,Object>> EntityConvertMap(List& ...

  9. CGLIB(Code Generation Library)详解

    什么是CGLIB CGLIB是一个强大的.高性能的代码生成库.其被广泛应用于AOP框架(Spring.dynaop)中,用以提供方法拦截操作.Hibernate作为一个比较受欢迎的ORM框架,同样使用 ...

  10. 你说一下Redis为什么快吧,怎么实现高可用,还有持久化怎么做的?

    前言 作为Java程序员,在面试过程中,缓存相关的问题是躲不掉的,肯定会问,例如缓存一致性问题,缓存雪崩.击穿.穿透等.说到缓存,那肯定少不了Redis,我在面试的时候也是被问了很多关于Redis相关 ...