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类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...
随机推荐
- Spring Cloud第六篇 | Hystrix仪表盘监控Hystrix Dashboard
本文是Spring Cloud专栏的第六篇文章,了解前五篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cloud ...
- 在mac上如何用safari浏览器调试ios手机的移动端页面
第一步 打开iphone手机的开发者模式,流程是:[设置]->[Safari]->[高级]->开启[Web检查器] 第二步 打开Mac上Safari的开发者模式,流程是[Safari ...
- git 使用详解(3)—— 最基本命令 + .gitignore 文件
Git 基础 本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置:开始或停止跟踪某些文件:暂存或提交某 ...
- Table表格滑过当前项[当前行][当前列]对应高亮
效果演示图: JS 代码如下: function TableHover($table){ $table.mouseenter(function(event) { va ...
- Spring源码学习笔记之基于ClassPathXmlApplicationContext进行bean标签解析
bean 标签在spring的配置文件中, 是非常重要的一个标签, 即便现在boot项目比较流行, 但是还是有必要理解bean标签的解析流程,有助于我们进行 基于注解配置, 也知道各个标签的作用,以及 ...
- python学习笔记—DataFrame和Series的排序
更多大数据分析.建模等内容请关注公众号<bigdatamodeling> ################################### 排序 ################## ...
- ARTS-S CentOS 7 ssh相关
修改默认端口 vi /etc/ssh/sshd_config 把Port的注释删除了改成自己想要的值 重启service sshd restart 或者sudo /etc/init.d/ssh res ...
- stm32 io操作 头文件规范
在stm32众多项目开发中,有太多的对io进行操作,若置1或清0,使用官方库提供的函数,固然方便,规范,但是需要包含标准的库,尺寸较大,还得处理不同版本兼容问题,包括io初始化也太繁琐,于是操作原子等 ...
- 各种常用js函数实现
1.bind function bind(fn, context) { var args = Array.prototype.slice.call(arguments, 2); retur ...
- 【hibernate】常用注解
[hibernate]常用注解 转载:https://www.cnblogs.com/yangchongxing/p/10357118.html 目录 ======================== ...