java基础学习笔记 第二周(面向对象)
Day01
什么是抽象数据类型:将不同数据类型的集合组成的一个整体,我们称为抽象数据类型
类就是一个抽象数据类型
成员变量:类中的数据类型就是成员变量(属性)
方法:类中的一些行为就是方法
面向过程(的缺点):1.对数据缺乏封装 2.数据和方法没有隔离
引用变量的赋值:
引用类型存储的的是对象的地址信息,相同类型引用变量之间也可以相互赋值;
引用类型变量之间的赋值不会创建新的对象,但可能会使两个以上的引用指向同一个对象
Emp e1=new Emp();
Emp e2=e1;//将e1的值赋给e2,他们指向了相同的对象。
也可以将null(空值)赋给引用变量:Emp e1=null;
DAY02
一个.java文件中只能有一个public类;public类必须是.java的类名
例如:文件名为Example 则有 public class Double_Array02 {
public static void main(String[] args) {...}}
1:方法的签名
1)方法名+参数列表就叫方法的签名
2)在同一个类中,不允许出现签名相同的两个方法
2:方法的重载
1)方法名相同,参数列表不同,我们称为方法的重载。(重载发生在一个类中,重写发生在子父类中)
3:构造方法
1)在类中定义
2)构造方法名必须与类名相同
3)构造方法没有返回值,也不写void
class Aoo{
public Aoo(){
}
}
4)一个类若没有写构造方法,则默认有一个无参的构造方法;
但是我们若自己写了构造方法,就没有默认构造方法
5)构造方法可以重载
6)this指代当前对象(往往指向是该对象的成员变量)
7)一个构造方法可以通过this()关键字来调用其它的构造方法
DAY03
Java虚拟机中的内存分配
jvm中:
会开辟一个称为堆的存储空间,用于存放new关键字创建的对象;
会开辟一个名为栈的存贮空间,用于存放程序运行时方法中声明的所有局部变量
方法区用于存放类的信息(Java程序运行时,首先会通过类装载器载入文件的字节码信息,经过解析后将其装入方法区,类的各种信息(包括方法)都存放在方法区)。
成员变量的生命周期:
可以理解为对象的生命周期,即new创建对象时,成员变量生命周期开始,当对象没有地址指向时,对象视为废弃对象,成员变量也被废弃,生命周期结束。
注意:方法只有一份。
成员变量:
存在与类内方法外的变量称为成员变量。
有默认值
存在于堆
局部变量:
存在方法内的变量称为局部变量。
没有默认值
存在于栈
局部变量的生命周期:
方法调用时开始,JVM会为方法分配一个空间,即栈帧。局部存在栈帧中。
方法调用完毕,栈帧消失,局部变量失效,生命周期结束。
父类的引用可以指向子类的对象,即向上造型;
通过父类的引用只能调用父类的成员变量和方法,不能调用子类特有的成员变量和方法;
例如:
class Animal{
public void jump(){
}
}
class Tiger extends Animal{
public void eat(){
}
}
public class A{
public static void main(String[] args) {
Animal a=new Animal();
Tiger t=new Tiger();
Animal at=new Tiger(); //这里创建的对象不能引用子类特有的方法和成员变量
}
}
对于一个父类的引用类型,可以指向该类的对象也可以指向其任意一个子类的对象。
如果需要把父类类型,转换成子类类型,那么需要强制类型转换.其格式为: 目标类型 变量名=()值;
如果父类类型不是指向需要强制类型转换的子类的对象,那么强制转
换会产生造型异常(ClassCastException)
例题:
Cat cat =null;
Animal animal = new Dog();
if (animal instanceof Cat) {
cat = (Cat) animal;
System.out.println(cat.noise());
}else{
System.out.println("animal is not Cat's instance");
}
其中,animal指向Dog的实例,而不是Cat的实例,故代码“ animal instanceof Cat” 返回false,程序执
行else分支,输出:“animal is not Cat's instance”。
DAY04
关于构造方法与super关键字
子类的构造方法可以通过super()来调用父类的构造方法,其往往用来初始化成员变量。
super()可以不写,默认第一行就有。
super()必须在第一行
final关键字
final修饰变量赋值后不能修改
final:修饰成员变量。要么声明的同时初始化,要么在构造方法中初始化。
修饰局部变量:在使用之前初始化即可。
final修饰方法,该方法不能被重写
final修饰类,该类不能被继承
方法的重写:在父子类中,方法签名相同,方法体不同。我们称之为方法的重写。
无论是父类的引用还是子类的引用,调用的都是重写后的方法.
在重写的方法中,我们可以会用super调用父类的方法(往往是被重写的方法)
子父类继承重写方法中两同两小一大问题:
两同:方法名和参数列表相同
两小:1)返回值类型要小于等于被重写的方法(基本类型和void保持不变)
2)抛出的异常小于等于被重写的方法
一大:重写的修饰符要大于等于被重写的方法的修饰符访问控制符大小问题:
修饰符 本类 同一个包中的类 子类 其他类
public 可以访问 可以访问 可以访问 可以访问
p'ro'tected 可以访问 可以访问 可以访问 不能访问
默认 可以访问 可以访问 不能访问 不能访问
private 可以访问 不能访问 不能访问 不能访问
重载与重写的区别:
重载:在同一个类中,方法名相同,参数列表不同。
调用方法根据参数个数和类型选择调用那个方法
重写:发生在父子类中,方法签名相同,方法体不同。
不管是父类的引用,还是子类的引用,最终调用的都是重写后的方法
调用哪个方法重载看引用类型,重写看对象类型。
static关键字
static:修饰的成员变量不属于对象的数据结构,属于类。通过类名.调用
static修饰的成员变量存在方法区,并且只有一份。
static:修饰方法,通常类名.调用。注意:静态资源不能调用非静态资源
static:修饰代码块,在类加载时加载一次,只有一份
DAY05
抽象
抽象方法:由abstract修饰的方法为抽象方法,抽象方法只有方法的定义,没有方法的实现(实现即方法体,大括号中的部分),并以分号结束。
抽象类:由abstract修饰的类为抽象类。包含抽象方法的类一定是抽象类;抽象类不一定包含抽象方法。
一个类继承了抽象类,必须要重写父类的所有抽象方法。若不重写抽象方法也可,要把类变成抽象类
抽象类不能被实例化,无论有没有抽象方法。
abstract和final不能同时作用于一个类
final修饰的方法不能被重写,修饰的类不能被继承。
abstract修饰的方法要被重写才有意义。
接口
接口:由interface修饰的类为接口,接口中的所有方法都必须是抽象方法。但是可以没有任何方法
接口中没有构造方法
接口中不能定义成员变量,但是可以定义常量。往往用static final来修饰常量
接口中的方法往往省略public abstract
implements:实现接口,重写接口中的所有抽象方法。注意:子类重写抽象方法时,控制访问修饰符一定时public
一个类可以实现多个接口,中间用逗号隔开。
* class&class -->extends
* class&interface -->more implements
* interface&interface -->extends
* class&abstract -->extends
* abstract&abstract -->extend
java基础学习笔记 第二周(面向对象)的更多相关文章
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
- java基础学习笔记五(抽象类)
java基础学习总结——抽象类 抽象类介绍
- Java基础学习笔记二十八 管家婆综合项目
本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添 ...
- Java基础学习笔记五 Java基础语法之面向对象
面向对象 理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式.面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程.例如:公司打扫卫生( ...
- Java基础学习笔记(二) - 面向对象基础
面向对象 一.面向对象概述 面向对象思想就是在计算机程序设计过程中,参照现实事物,将事物的属性特征.行为特征抽象出来,描述成计算机时间的设计思想.面向对象思想区别于面向过程思想,强调的是通过调用对象的 ...
- python学习笔记第二周
目录 一.基础概念 1.模块 1)os模块 2)sys模块 2.pyc文件 3.数据类型 1)数字 2)布尔值 3)字符串 4.数据运算 5.运算符 6.赋值运算 7.逻辑运算 8.成员运算 9.身份 ...
- Java基础学习笔记三 Java基础语法
Scanner类 Scanner类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...
随机推荐
- replace find join
>>> s='spam' >>> s=s.replace('m','111') >>> s 'spa111' >>> where ...
- MySql数据基础之数据表操作
MySql数据库中主要利用多个数据表进行数据的存储,我们可以将数据表理解成一个Excel表格,Excel表格的第一列可以将它看为id列,主要任务是数据表中数据的唯一标识,不能重复.不能为空.如果将数据 ...
- hadoop format 重新格式化
前文:如果格式化完之后,使用jps命令发现进程都已经启动,但是使用web页面打不开hadoop的网页,可能原因就是防火墙没关或者是哪个配置过程配错了. 1.关闭防火墙 一般最好是关闭防火墙比较关闭. ...
- I_want_all 2019训练记录
Team members StarHai binarycopycode Fly_White Caution 读题 数组第一维的访问速度比其他维速度快. 清空数组 乘法运算取模里面涉及到减法注意变为负数 ...
- JS系列:js节点
节点(node) 在html文档中出现的所有东西都是节点 元素节点(HTML标签) 文本节点(文字内容) 注释节点(注释内容) 文档节点(document) … 每一种类型的节点都会有一些属性区分自己 ...
- 大数据学习笔记——Spark工作机制以及API详解
Spark工作机制以及API详解 本篇文章将会承接上篇关于如何部署Spark分布式集群的博客,会先对RDD编程中常见的API进行一个整理,接着再结合源代码以及注释详细地解读spark的作业提交流程,调 ...
- 大数据学习笔记——Spark完全分布式完整部署教程
Spark完全分布式完整部署教程 继Mapreduce之后,作为新一代并且是主流的计算引擎,学好Spark是非常重要的,这一篇博客会专门介绍如何部署一个分布式的Spark计算框架,在之后的博客中,更会 ...
- Swing JTable使用
package cn.ychx; import java.awt.Dimension; import java.awt.Toolkit; import java.sql.Connection; imp ...
- 3年java开发竟然还不知道Lambda的这个坑
背景 有朋友反馈zk连接很慢.整理出zk连接的关键逻辑如下: 上面的代码造成第一次调用ClientZkAgent.getInstance的时候,需耗时10s, 这个时间恰好跟semaphore的超时时 ...
- LeetCode 1290. 二进制链表转整数
地址 https://www.acwing.com/solution/LeetCode/content/7132/ 题目描述给你一个单链表的引用结点 head.链表中每个结点的值不是 0 就是 1.已 ...