2020-01-20

面向对象的思想:

面向对象区别于面向过程而存在的,在早期的编程语言中,我们是先固定功能,然后根据功能来编写代码,每一个功能对应一段代码,这段代码只能完成本功能

这样做的方式及其繁琐,代码量太大了,而且检查代码会消耗巨大的时间,为了提高效率,人们将一些可以重复使用的代码提取出来,封装成一个方法,这样就达到了重复使用的目的

再后来,我们将一些性质相近的方法放到一起,就出现了一个类,我们将可以完成一系列功能的类称之为对象

所谓对象就是具有一定功能的独立个体,不在局限于完成固定功能,不在局限于代码的实现,以创造具备某些功能的个体,让这些个体去完成我们的指令为编程方式,这就是面向对象的思想

特点:更符合人类的思想习惯,将复杂的事情简单化,将我们从执行者变成了指挥者;是不断创造对象,指挥对象去做事情---面向对象编程的设计其实就是在管理和维护对象之间的关系

面向对象的特点:封装继承多态

2.对象

 定义:在java中,我们想要使用定义的类来做工作,就必须先将这个类激活;激活之后的类叫做对象,一个类可有多个对应的对象,就像是拿图纸造出来的实物

格式:通过new关键字来创建对象;调用的时候通过对象名来调用----对象名.变量名---对象名.方法名();

对象中属性的值:定义类的时候,如果类中的属性有值,创建对象中的属性也会是这个值,如果类中的属性没有具体值,创建对象中的属性会有一个默认值,一般来说,类描述的应该是一类事物,而不是简简单单是一个具体的事物

三/对象和类的内存

1.存储位置:类存储域内存中的方法区内,只有一份;new出来的对象存储于内存中的堆内存中,同一个类的对象可以有多个

2.使用问题:类无法直接使用,是一个骨架,图纸;而对象可以使用其中的成员,是活的具体实物

3.引用方法:一个对象名引用一个实例对象---多个对象名引用不同的实例对象,多个对象名引用相同的实例对象

四/成员变量和局部变量

1.定义:

成员变量属于类或对象,使用对象名可以直接调用

局部变量属于方法,对象无法直接调用,只能在运行方法的时候运行

2.区别:

在类中的位置不同:成员变量在类中,方法外,局部变量定义在方法中或者方法声明上

在内存中的位置不同:成员变量在堆内存(成员变量属于对象,对象进堆内存);局部变量在栈内存(局部变量属于方法,方法进栈内存)

生命周期不同:成员变量随着对象的创建而存在,随着对象消失而消亡;局部变量随着方法调用而存在,随着方法的结束而消亡

初始化值不同:成员变量有默认值,是在对象创建的过程总jvm设置的默认值;局部变量没有默认值,必须在使用之前赋值

五/匿名对象

没有名字的对象,当前方法内,对象只使用一次的情况

六/private关键字

1.定义:是一个权限修饰符,可以修饰成员变量和成员方法.被其修饰的成员只能在本类中使用

2.作用:限定使用范围,禁止别人调用类的成员,保证数据的安全性,可以通过方法中的代码对有害数据进行过滤

javabean

类中的属性全部私有化,通过getter和setter方法进行设置,通过tostring方法用来描述对象,javabean主要作用是运送数据

七/this关键字

1.定义,代表本类对象的引用,用来区分重名的成员变量和局部变量

2.注意事项:只能在本类方法中使用,本类的静态方法中无法使用,当我们创建对象并调用对象的方法时,方法中如果出现了this,指的就是当前创建的这个对象;本类对象中的方法调用本类的其他方法时,其实被调用的方法的前面就有一个省略的this

总结:

1.面向对象:

java的程序一般是运行在多工环境中(同一时间有很多人使用)

为了保证代码和数据的安全性,每个人使用的类必须分开

所以,java中会创建一个模板,用户使用的时候,通过模板创造出每个人专属的对象

所以,java成员每天都在跟对象打交道,砸门称之为面向对象编程

2.类的使用

工具

模板:成员变量和成员方法混合使用,单独使用成员变量的(javabean)

3.对象:根据模板创建的实例,存放在堆内存中.一个类可以创建无数个对象---类名 对象名 = new 类名();

4.成员变量和局部变量

差异性在于书写位置,内存中的位置,声明周期,初始化值

5.匿名对象

没名字的对象,用一次就不用了

6.private关键字:私有化,本类中的其他成员可以使用,别的类无法使用

7.javabean

用来存储运输数据,私有化所以的成员变量,提供所有的getter和setter方法,提供tostring方法

8.this:表示当前对象,那个对象调用这个方法,this代表谁


day8

一.构造方法

1.定义:用户初始化对象,我们在通过new关键字创建对象的时候,必须调用构造方法

2.特点:

方法名和类名相同(大小写也要于类名相同)

没有返回值类型,注意,连void都没有

没有具体的返回值return

构造方法可以是有参的,也可以是无参的

3.注意事项

如果没有写构造方法,那么编译器会自动加一个空参的构造方法,如果已经写了有参的构造方法,编译器就不会在加上空参的构造上了,这个时候如果还想使用空参的构造,那么就需要手动补上空参构造----构造方法必须通过new关键字来调用,不可以使用对象名来调用;构造方法也是成员方法,只是比较特殊而已,所有成员方法的属性构造方法也拥有---创建对象的时候,只能调用一个构造方法,但构造方法内部可以相互调用,本类中的成员方法无法调用构造方法

二/构造方法的重载

1.定义:

和成员方法的重载一样,方法名相同,参数列表不同

需要注意的是,只要是构造方法,方法名一定是相同的,也就是说构造方法的重载只是参数列表不同

2.构造方法相互调用

构造方法可以重载,我们可能会写多个构造方法以应对不同的赋值动作,已经写过的构造方法可以直接调用

使用this(),表示调用本类的构造方法,并且this()必须写在第一行

三/类成员之间的相互调用

1.定义:成员变量一般来说都是为了成员方法服务的;成员方法可以根据成员属性的不同做出不同的应对

四/代码块

1.代码块就是定义一个无名称的代码块,用{}括起来

2.分为局部代码块(方法中),构造代码块(类中方法外),静态代码块(类中方法外),同步代码块(作用域多线程中)

详情:

局部代码块:限定局部变量的成名周期,及早释放,提高内存利用率,在方法中创建一个域,限制变量的作用范围

构造代码块:创建对象时候优先于构造方法执行,多个构造方法中相同的代码存放到构造代码块中,节省代码量

静态代码:给构造代码块加上static关键字就编程了静态代码块,用于类的初始化,在类加载的时候就执行,并且只在类加载的时候执行一次,一般用于加载驱动

五/静态

1.定义

用于修饰类的成员,表示静态;一旦被修饰,类的成员将不再属于这个类创建的对象

2.特点:

随着类的加载而加载,优先于对象存在,被类的所有对象共享,通过类名调用,优先于类的其他成员,类的所有静态成员都存储于静态方法区

初始化顺序:静态成员变量--静态代码块--成员变量--构造代码块--构造方法;

静态成员变量和静态代码块谁写在前面谁先执行

六/静态的使用

1.定义:通过对静态的了解,存放于方法区之中,属于类,我们也称之为类成员----多用于工具类的方法或者频繁需要调用的方法---当一个属性或方法被所有的对象共享的时候

2.使用格式: 类名.成员变量名  /  类名.方法名()

3.注意事项:

静态的成员在内存中只有一份

所有的操作指向的都是同一个静态成员

可以使用对象名调用,但是不推荐

静态可以极大的提升运行的效率

静态随着类的存在而存在,随着类的消亡而消亡,jvm不关闭,静态就一直存在,太多的话,容易溢出

七/静态和非静态

1.this关键字的问题

静态方法中无法使用this关键字,因为静态方法调用的时候,不需要对象;非静态方法中可以使用this关键字,因为非静态方法在调用的时候必须要有对象

2.访问成员变量

静态方法只能访问静态的成员变量,如果要使用非静态的成员变量,必须先创建对象

非静态的方法可以直接访问静态的成员变量,也可以直接访问非静态的成员变量

3.访问成员方法

静态方法只能访问静态方法,如果想使用就必须要创建对象

非静态方法可以直接访问静态方法,也可以直接访问费静态方法

(静态只能访问静态1)直接调用


八/main方法详解

1.格式:public static void main (String[] args){}

2.详解:

public被jvm调用,访问权限足够大

static被jvm调用,不用创建对象,直接类名访问

void被jvm调用,不需要给jvm返回值

main一个通用的名称,虽然不是关键字,但是被jvm识别

String[] args 以前用于接收键盘录入的arguments



day9

一/单例模式

1.定义

单例也叫单态模式,是设计模式中最简单的一种,当一个类被创建之后,只能产生一个实例供外部访问,并且提供一个全局访问的方法

单例的最终目的就是保证一个类在内存中只能有一个实例对象

java频繁创建和销毁对象都会占用一部分系统资源,使用单例模式可以提高性能

单例模式创建的对象不会被回收,过多的单例容易造成溢出

2.创建过程

私有化构造方法(使用private修饰)

在其内部产生该类的实例化对象,并将其封装成private static 类型

定义一个静态的方法返回该类的实例

分为饿汉式和懒汉式,饿汉式是上来直接创建对象,懒汉式是提供接口的时候,再创建对象

3.注意事项

单例模式总共有七种基本写法

我们现阶段写的都是线程不安全

4.应用场景

适用于全局只需要一个的情况下,比如Windows系统的任务管理器,java中的日历类

二/继承          

1.定义:

从生活中的理解,我们可以明白,继承就是从前辈手里获取一些好处;编程语言中的继承是指让类与类之间产生关系,子父类关系

2.优缺点

优点:就是为了获取父类中的方法和属性---提高代码的复用性和维护性---让类和类之间产生关系,是多态的前提

缺点:类的耦合性增强了,我们开发的原则是高内聚低耦合---耦合指的是类与类的关系,内聚就是独立完成工作的能力

三/继承中的注意事项

1.this和super关键字

this代表本类对象,super代表父类对象,this.成员 调用本对象中的成员,也可以调用父类中的成员(当子类中没有的时候)---super.成员 调用父类的成员  this(...)调用本对象的构造方法   ---super(...)调用父对象的构造方法

2.继承中构造方法的关系

子类中的所有构造方法都会默认访问父类中的无参构造方法

因为类继承父类中的数据,可能还会使用父类中的数据,所以子类在初始化的时候需要将父类先初始化

每一个子类构造方法的第一条语句默认都是:super(),object类最顶层的父类

当父类中没有空参构造的时候,子类会报错,这时我们可以采用调用父类的有参构造,并附上默认值

3.继承中成员的关系

子类无法使用父类私有的成员

如果子父类出现了一样的成员变量,采用就近原则

4.继承中的初始化顺序

静态优先,父类优先,成员变量---构造代码块---构造方法

5其他注意事项:

使用时,尽量使用最底层的子类,最底层的子类的功能是最全的

如果要查看这个体系中共性的功能,就去查看顶层的父类

不要为了继承而继承

三/方法重写(overriding)

1.定义

子父类中出现了一模一样的方法

重写是一种现象,也是一个动作

当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写方法,这样,既延续了父类的功能,又定义了子类特有的内容

2.重写的意义

首先,我们定义的方法本体和父类中的方法是一样的,只是我们实现更加先进而已

别人已经熟悉了父类中的这个方法,如果子类出现同样的方法会提高使用者的辨识度,同时又能让使用者用上新的功能,这是版本升级所需要的的

四/重写的注意事项

1.私有方法

父类中私有方法不能被重写,因为父类私有方法子类根本无法继承

2.权限

子类重写父类方法时,访问权限不能更低,最好保持一致

3.静态方法

父类的静态方法,子类也必须通过静态方法重写

重写其实是全遮挡,调用者无法在通过任何方式去调用和子类关联的父类对象中的方法

但是静态无法做到全遮挡,我们依然可以直接使用父类的方法

五/instance关键字

1.定义

用来判断一个对象是否属于一个类或者此类的父亲

2.用法

对象 instance of 类名

该表达式是一个比较运算符,返回的结果是boolean型,

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,746评论 2 9
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,645评论 0 11
  • 面向对象笔记 一、 对象在内存中的存放方法以及被调用过程 class文件首先被加载到方法区中的class文件内容区...
    VictorBXv阅读 462评论 0 2
  • 第四章 面向对象 面向对象思想 面向对象思想的引入前面我们讲过数组,当有多个数组都需要遍历时,我们可以将遍历的代码...
    chongsheng阅读 550评论 0 0
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,220评论 0 2