Java基础笔记总结(4)-面向对象编程(构造方法,继承,this和super,final,方法重写)

构造方法:给数据的对象进行初始化

注意:

1、方法名和类名相同

2、没有返回值类型,也不需要void

3、没有具体的返回值类型return(return;)

4、构造方法不能使用对象进行调用 P.Person()是错误,在创建对象的时候,系统帮我调用构造方法

构造方法的重载

“方法名相同,与返回值类型无关,至于参数类型有关”

  若没有给出构造方法,系统自动给提供一个无参构造方法,若给出了构造方法,系统不会自动给出,需要自己提供

==============================================================

创建对象的步骤,

1、将编译文件加载进入内存

2、声明类引用, 用压栈将Main压入栈 在栈中创建声明类

3、在堆内存中new 出一块空间,并把地址付给栈

4、将构造方法压入栈执行,并修改参数

==============================================================

static 关键字

方法区中的编译文件有两块区域:静态区域和非静态区域

1、随着类的加载而加载

2、优先于对象存在的

3、被所有的对象所共享

如果某个成员变量被所有对象共享,就可以定义为静态的

4、可以通过类名直接调用

注意事项:

1、静态方法中没有this关键字,因为静态随着类的加载而加载,this是随着对象的创建而存在。静态比对象先存在,因此不能使用this关键词

2、静态方法只能静态成员变量和静态成员方法

3、 非静态方法既可以访问静态成员变量,也可以访问非静态成员变量,既可以访问静态成员方法,也可以访问非静态成员方法

主方法的格式:

public  static void main(String[] args)

public:被jvm调用,权限足够大

static:被jvm调用,不需要创建对象,直接调用即可

void:被Jvm调用不需要任何返回值

main:只有这样写被能被jvm识别

String[] args 以前是用来接收键盘录入的(现在都是用Scanner)

-----------------------------------------------------------------------------------------------------------------

使用静态类做一个工具类 直接在方法上创建static ,省去创建对象的力气

如果一个类中所有方法都是静态的,需要多做一步,私有构造方法,防止私自创建对象

====================================================================

文档说明书

类名前要增加Public

/**

这是一个数组工具类,里面封装了查找数组最大值等方法

@author xxx

@version v1.0

*/

在每个方法上

/**

描述相关方法

@param 参数名 参数类型

@return 返回数组中的最大值

*/

  编译java说明书用javadoc -d api -version -author -类名

-------------------------------------------------------------------------------------------------------------------

随机数的使用 Math.random() 返回一个大于等于0.0,小于1.0的double值,可以使用强制类型转换实现 (int)(Math.random()*100)+1

-------------------------------------------------------------------------------------------------------------------

面向对象的代码块

用大括号括起来的部分,根据位置和声明不同可以分为

局部代码块:在方法中出现,限定变量的生命周期,及早释放,提高内存利用率,除了括号变量就会释放掉

构造代码块(初始化块):在类中方法外出现,多个构造方法中相同的代码存放在一起,每次创建对象都会调用构造代码块执行,并且在构造方法前执行

静态代码块:在类中方法外出现,加Static修饰,用于对类初始化,在加载过程中执行,并且只执行一次操作(优先级高于main)

同步代码块:多线程

---------------------------------------------------------------------------------------------------------------------

继承:

优势:提高代码的复用性

        提高代码的维护性

        让类和类之间产生了关系,是多态的前提

弊端:类的耦合性增强了(耦合是类与类之间的关系,内聚是类完成事物的能力)

this 和super的区别

this 代表当前对象的引用,调用本类的成员变量,也可以调用父类的成员变量,但是就近原则,有子类不用父类

super 调用父类的成员变量  调用super()必须写在子类构造方法的第一行,否则编译不通过。

super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。

this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。 尽管可以用this调用一个构造器,但却不能调用两个。

this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。

从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。

创建子类的构造方法时,要先调用super(),去执行父类的构造方法

1、jvm调用main方法,main进栈

2、会先将父类编译文件,和子类编译文件分别加载进内存中,再创建对象

3、当父类编译文件加载至内存,父类的静态代码块会随着父类编译文件一起加载

4、当子类编译文件加载至内存,子类的静态代码块会随着子类编译文件一起加载

5、先输出父类静态代码块 在输出子类静态代码块

6、运行子类构造方法,因为java是分层初始化,先初始化父类,再初始化子类,固先运行父类构造,但是在执行父类构造时,发现父类有构造代码块,构造代码块优先于构造方法执行

7、第三个输出父类构造代码块,第四个输出父类构造方法

8、第五个输出子类构造代码块,第六个输出子类构造方法

--------------------------------------------------------------------------------------------------------------------

继承中的成员方法关系:

子类方法可以调用父类方法,同名方法的话,优先调用子类方法,若要调用父类方法,使用super.

方法重写,子父类出现了相同方法

注意事项:

  1、父类中私有方法不能被重写

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

  3、父类中的静态方法,子类也必须通过静态方法重写(静态只能覆盖静态)----》不算是方法重写


-------------------------------------------------------------------------------------------------------------------

Override 和 Overload区别,Overload能改变返回值类型吗?

Overoload可以改变返回值类型,只看参数列表,其中重载方法名一样,参数列表不一样,和返回值类型无关

Override 子类和父类方法名一模一样,返回值也一致

--------------------------------------------------------------------------------------------------------------------

final关键字

特点:

1、修饰类,类不能被继承

2、修饰变量,变量变为常量且只能被赋值一次

3、修饰方法,方法不能够被重写

补:常量命名规范,多个单词采用下划线隔开,一个单词使用全大写字母

先写Static 再写Final

注意 基本数据类型:值不变

      引用数据类型:地址值不能改变,对象中的属性可以改变(不可以再new 但是可以修改属性值)

final修饰初始化变量的时机 1、显示初始化 2、在对象构造完毕前即可

final必须是有赋值的变量,若没有赋值则有问题,即默认初始化值是无效值

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

推荐阅读更多精彩内容

  • 面向对象笔记 一、 对象在内存中的存放方法以及被调用过程 class文件首先被加载到方法区中的class文件内容区...
    VictorBXv阅读 456评论 0 2
  • 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发...
    慕容小伟阅读 1,763评论 0 10
  • 整理来自互联网 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具...
    Ncompass阅读 1,534评论 0 6
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,627评论 0 11
  • ——关于定位 从来都没想过独居小楼成一统的单线思维能被不搭界的商业定位攻陷的时候,昨日今个...
    箫音声声阅读 173评论 0 0