Java基础学习总结笔记
Java基础
Java常用内存区域
- 栈内存空间:存储引用堆内存空间的地址
- 堆内存空间:保存每个对象的具体属性内容
- 全局数据区:保存static类型的属性
- 全局代码区:保存所有的方法定义
修饰符
权限修饰符
5
| 修饰符 | 同一个类中 | 同一个包中子类无关类 | 不同包的子类 | 不同包的无关类 |
|---|---|---|---|---|
| private | √ | |||
| 默认 | √ | √ | ||
| protected | √ | √ | √ | |
| public | √ | √ | √ | √ |
状态修饰符
this关键字
表示该类的属性变量:this.变量名
调用本类的构造方法:this()
表示当前类,可调用成员方法:this.成原方法名()
static关键字
- 声明属性:使之独立于对象,成为全局属性(亦称静态属性)
- 声明方法:使之成为"类方法",可直接通过类名调用:<类名>.<方法名>()
- 静态成员方法只能访问静态的成员变量或方法
final关键字
- final声明的类不能有子类
- final声明的方法不能被子类覆写
- final修饰的变量
- 基本类型:修饰数据值,不能被改变
- 引用类型:修饰地址值,地址不可以被改变,地址指向的数据可以改变
继承
访问父类的成员变量:super.变量名
关键字 访问成员变量 访问构造方法 this this.成员变量
访问本类成员变量this()
访问本类构造方法super super.成员变量
访问父类成员变量super()
访问父类构造方法通过子类对象访问一个方法
- 先在子类范围内寻找
- 再在父类范围寻找
子类中所有构造方法被调用时,默认都会先访问父类无参构造方法
- 因为子类会继承父类中的数据,可能还会使用父类中的数据。所以子类初始化之前,一定要先完成父类数据的初始化
- 每一个子类构造方法的第一条语句默认都是super()
- 若使用父类带参构造方法进行数据初始化,即super()
- 若父类中没有无参构造方法,只有带参构造方法
- 用super关键字去显示的调用父类带参构造方法
- 在父类中自己提供一个无参构造方法
方法重写
子类出现了和父类中一模一样的方法声明
应用
当子类需要父类的功能,而功能的主体子类又自己特有的内容时,可重写父类中的方法,这样即沿袭了父类的功能,又定义了子类特有的内容。
重写的方法中,可擅用super关键字沿袭父类的(基础)功能
课用@Override检测重写方法是否有误
注意事项
父类中的private方法无法被子类继承,则无法被重写
子类方法访问权限不能更低
(public>默认>protected>private)
Java继承的注意事项
- 一个子类只能单继承,不支持多继承
- 可实现多层继承
多态
在Java中主要有两种体现形式:
- 方法的重载与覆写(重写)
- 对象的多态性
成员访问特点:(为何两种不一样:成员方法有重写)
- 成员变量:编译与执行均看左边
- 成员方法:编译看左边,执行看右边
优弊
优势:提高了程序的扩展性
具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作
弊端:不能使用子类的特有功能
转型(实现使用子类特有功能)
向上转型:从子到父,父类引用指向对象
向下转型:从父到子,父类引用转为子类对象
用强制类型转换实现执行子类特有方法(不占用新的堆内存)
抽象类
概述:
在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象方法
特点
抽象类和抽象方法必须用abstract关键字修饰
抽象类中不一定有抽象方法,由抽象方法的类一定时抽象类
抽象类不能直接实例化
如何实例化:参照多态的方法,通过子类对象实例化,这叫做抽象类多态
抽象类的子类
要么重写抽象类中的所有抽象方法
要么本身就是抽象类
抽象类成员特点
成员变量:变量/常量
构造方法:
不可直接实例化。
用于子类访问父类数据的初始化成员方法:
可以有抽象方法:限定子类必须完成某些动作
也可以有非抽象方法:提高代码的复用性
抽象类名作为形参和返回值
- 方法的形参时抽象类名,其实需要的时该抽象类的子类对象
- 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象
接口
Java中的接口更多的体现在对行为的抽象
声明接口关键字:interface
public interface <接口名>;调用接口关键字:implements
public class A implements <接口名>;接口是abstract的,亦不可直接实例化
接口多态
- 多态的形式:具体类多态,抽象类多态,接口多态
- 多态的前提:
- 有继承或者实现关系;
- 有方法的重写/覆写
- 有父类/父接口引用指向子/实现类对象
成员特点
- 成员变量:默认被public static final修饰
构造方法
接口无构造方法,因为接口主要是行为进行抽象的
一个类如果无父类,默认继承自Object类
类和接口的关系
一个类或接口可以implements多个接口
抽象类和接口的关系
成员区别
抽象类 变量,常量;有构造方法;有抽象方法也有非抽象方法 接口 常量;抽象方法 2.关系区别
类与类 只能extends一个父类 类与接口 可以implements多个接口 接口与接口 同上 3.设计理念区别
抽象类 对象抽象(属性,行为) 接口 主要对行为抽象
接口名作为形参和返回值
- 方法的形参是接口名,其实需要的是该接口的实现类对象
- 方法的返回值是接口名,其实返回的是该接口的实现类对象
内部类
访问特点
- 内部类可直接访问外部类的成员,包括private
- 外部类要访问内部类成员,必须创建对象调用
成员内部类
当内部类权限为public时:
外界使用内部类格式(外部类名.内部类名):
例:Outer.Inner oi = new Outer().new Inner();
当内部类权限为private时:
类似于构建getAge和setAge方法。
局部内部类
定义在方法内,外界无法直接访问,需要在方法内部创建对象并使用
该类可直接访问外部类的成员,也可访问方法内的局部变量
匿名内部类
前提:存在一个类或接口,类可以时具体类也可抽象类
格式:
new 类名或接口名() {
重写方法;
}
本质:
是一个继承了该类或实现了该接口的子类匿名对象
用例:
Java基础学习总结笔记的更多相关文章
- Java基础学习心得笔记
对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变.面向过程就是把你的代码封装成函数,然后依次去做一件事情,面向过程是把你要做 ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- java基础学习笔记五(抽象类)
java基础学习总结——抽象类 抽象类介绍
- java基础学习总结——开篇
java是我学习的第一门编程语言,当初学习java基础的时候下了不少功夫,趁着这段时间找工作之际,好好整理一下以前学习java基础时记录的笔记,当作是对java基础学习的一个总结吧,将每一个java的 ...
- JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API
森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397 文章- 0 评论- 78 JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...
- Java基础学习-- 继承 的简单总结
代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...
- Java基础学习中一些词语和语句的使用
在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...
随机推荐
- apidoc学习(接口文档定义取代word)
apidoc的安装,参考:https://blog.csdn.net/qq_36386771/article/details/82149848 生产文档,需要先编写一个apidoc.json对接口文档 ...
- sql server添加单独新用户
- SQL注入 (一)
一.手工注入 注入点检测 识别方法:通过在url栏输入'.and 1=1.or 1=1.and sleep(1),如果出现报错,或者页面不一致,则可能存在注入点. 注入类型:整数型.字符型.搜索型.B ...
- 八、TestNG忽略测试
一个TestNG 测试类中如果有的方法不想测试可以使用 enabled 属性 enabled = false 该方法不参与测试 enabled = true 该方法参与测试 @Test 不写en ...
- [日常摸鱼]Uva11178Morley's Theorem-几何
题意:给一个$\Delta ABC$,分别做三个角的三等分线相交成$\Delta DEF$,求出$D,E,F$的坐标. 直接根据题意模拟 #include<cstdio> #include ...
- Python高级语法-私有属性-with上下文管理器(4.7.3)
@ 目录 1.说明 2.代码 关于作者 1.说明 上下文管理器 这里使用with open操作文件,让文件对象实现了自动释放资源.我们也能自定义上下文管理器,通过__enter__()和__exit_ ...
- k8s第二回之k8s集群的安装
1. k8s集群的安装 目录 1. k8s集群的安装 1.架构: 2.环境准备 3.master节点安装etcd 4. master节点安装kubernetes 5.node节点安装kubernete ...
- SQL注入及如何解决
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗 ...
- kafka rebalance解决方案 -incremental cooperative协议和static membership功能
apache kafka的重平衡(rebalance),一直以来都为人诟病.因为重平衡过程会触发stop-the-world(STW),此时对应topic的资源都会处于不可用的状态.小规模的集群还好, ...
- Windows系统提示:“windows找不到文件请确定文件名是否正确后
最近使用Win7/10系统的用户反应在系统中移动了桌面上的一些与系统无关的文档,在挪动了文件之后出现的问题,弹出了windows找不到文件请确定文件名是否正确后,再试一次, 的错误提示,该怎么办呢? ...