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类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...
随机推荐
- qs库使用指南
qs是一个流行的查询参数序列化和解析库.可以将一个普通的object序列化成一个查询字符串,或者反过来将一个查询字符串解析成一个object,而且支持复杂的嵌套.它上手很容易: Qs.parse('x ...
- HashMap的常见问题
关于HashMap的一些常见的问题,自己总结一下: 首选HashMap在jdk1.7和jdk1.8里面的实现是不同的,在jdk1.7中HashMap的底层实现是通过数组+链表的形式实现的,在jdk1. ...
- ARTS-S Why do India and Pakistan keep fighting over Kashmir?
原文 On Wednesday, Pakistani and Indian fighter jets engaged in a skirmish over Indian-controlled terr ...
- CSS——overflow的参数以及使用
学习网站:https://developer.mozilla.org/zh-CN/docs/Web/CSS/overflow
- Element UI 源码—— Carousel 走马灯学习
参考博客:https://segmentfault.com/a/1190000014384638?utm_source=tag-newest
- 【hibernate】常用注解
[hibernate]常用注解 转载:https://www.cnblogs.com/yangchongxing/p/10357118.html 目录 ======================== ...
- 5种JVM垃圾收集器特点和8种JVM内存溢出原因
先来看看5种JVM垃圾收集器特点 一.常见垃圾收集器 现在常见的垃圾收集器有如下几种: 新生代收集器: Serial ParNew Parallel Scavenge 老年代收集器: Serial O ...
- 学习构建调试Linux内核网络代码的环境MenuOS系统
构建调试Linux内核网络代码的环境MenuOS系统 一.前言 这是网络程序设计的第三次实验,主要是学习自己编译linux内核,构建一个具有简易功能的操作系统,同时在系统上面进行调试linux内核网络 ...
- BeetleX之TCP服务应用详解
BeetleX是.net core平台下的一个开源TCP 通讯组件,它不仅使用简便还提供了出色性能的支持,可以轻易让你实现上百万级别RPS吞吐的服务应用.组件所提供的基础功能也非常完善,可以让你轻易扩 ...
- CCF-CSP题解 201403-4 无线网络
新建不超过\(k\)个无线路由器,求使路由器1.2连通最少的中间路由器. 首先常规建图,将相距不超过\(r\)的路由器(包括新建的)相连. 想到了分层\(dijkstra\).类似的,作\(bfs\) ...