Java------面向对象

面向对象三大基本特性是:封装,继承,多态

封装

1.概念:
把类的属性进行封装,可以隐藏方法的内部实现,仅仅提供调用的 方法,避免被随意修改。
2.private关键字
private:私有的,可以修饰成员变量和成员方法。
注意:被private修饰的成员只能在本类中访问,在其他类中是不能直接访问的。
作用:将成员变量私有化,对外提供对应的set,get方法对其进行访问,提高对数据访问的安全性。
3.为什么要setter/getter方法
类中的所有成员变量私有,其他类要想使用就需要提供相应的get/set方法

继承

1.概念:
子类可以继承父类的所有非私有属性,子类与父类要在同一个包下,否则无法继承。
继承关系下,子类可以重写父类的方法。
注意:
直接访问:对象名.成员; ---- 类名.静态成员
间接访问:通过父类的方法访问私有成员
2.格式:class 类A extends 类B{
//这就表示类A继承了类B。
}
3.什么时候使用:类之间有继承关系,就可以考虑使用继承,不要为了获取部分功能而去使用继承。
4.作用:提高代码的复用性,让类与类之间产生了一个关系,是多态的前提。

继承中的构造方法

  1. 子类在构造方法的特点:会默认访问父类的无参构造方法(默认语句:super())
  2. 如果父类无无参构造,子类构造如何访问父类构造
    a:通过super(参数)调用父类带参构造方法(推荐)
    b:通过this(参数)调用本类的其他构造方法(不推荐)
    C:如果一个类中所有的构造方法第一句都调用this(参数),这样是错误的
  3. 构造方法执行完后会创建该类的对象吗?
    不一定,子类的构造方法第一行调用父类的构造方法时,不会创建对象
  4. 注意
    构造方法中的this()和super()语句必须放第一行,且只能取其一

重载与重写

  1. 重载(overload)
    (1)定义:一个类中或者子父类关系中存在多个同名方法,并且参数列表不同的方法叫重载
    (2)特点:方法名相同,参数列表不同。与返回值类型无关
    (3)注意:永远建议,写的什么类型的形式参数,你就应该用什么类型的实际参数调用。如果实际类型是小的形式是大的,可以,反之不行。
  2. 重写(override)
    (1)概念:在子类中,对从父类继承的方法进行修改,出现与父类中方法声明(方法名,参数列表,返回值类型)相同的方法,叫重写。(方法体不同,子类修饰权限大于等于父类:public>protected>default>private)
    (2)注意事项:a.父类私有方法不能被重写(私有不可以被继承,没有继承关系,所以不算重写)b.子类方法的访问权限一定要大于等于父类的访问权限,
    静态只能重写静态(这个不能算,因为静态跟类相关)
    (3)什么时候用重写:子类需要父类的功能,而子类功能有自己特有内容时,可以重写父类中的方法。
  3. 重载和重写的区别:
    (1)方法重载:同一个类中或子父类中,方法名相同,参数列表不同。与返回值类型无关
    (2)方法重写:子父类中,出现方法声明相同的情况,返回值,方法名,参数列表都相同
  4. 注意:
    (1):构造方法不能重写,因为构造方法要和类名相同。
    (2):只有方法才重写,变量不存在重写

多态

指类实例的对象具有的相同方法在不同情形有不同表现形式。

多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)

多态存在的三个必要条件

一、要有继承;
二、要有重写;
三、父类引用指向子类对象。

类与对象

类的组成

成员变量 ---- 属性
构造方法 ---- 对成员变量进行初始化
成员方法 ---- 行为
构造方法:定义在类中,方法外的变量。描述类的属性(特征)
成员方法:描述类的行为(功能)
注意:1同一个java文件在如果有被public修饰的类,那么只能是带有main方法的那个类,且该类的类名必须和文件同名。
2属性可以是简单变量,也可以是一个对象。(eg:int age; Student s)

类与对象的关系

类:是抽象的,是一类事物共同属性和行为的集合。
对象:是具体的,是一个具体的实物(是类的具体的体现)

如何使用定义好的类

  1. 定义格式:类名 对象名 = new 类名();
  2. 使用格式
    * 成员变量的使用:
    调用:对象名.方法名
    赋值:对象名。变量名 = 值;
    * 成员方法的使用 :
    调用:对象名.方法名(实际参数);

成员变量和局部变量

  1. 定义位置

    • 成员变量:定义在类中方法外
    • 局部变量:定义在类的方法中,或者方法的形式参数中
  2. 初始化的区别

    • 成员变量 :有默认的初始化值
    • 局部变量:没有默认的初始化值,使用前必须被初始化。
  3. 储存位置

    • 成员变量 :推,随着对象的存在而存在
    • 局部变量:栈,随着方法的存在而存在
  4. 成员变量其实是这个类的属性,
    局部变量的声明不可以加任何访问权限修饰符也不可以使用static修饰(静态方法中),似乎,所有修饰符中只能使用final修饰。


    image.png
  5. 注意事项:局部变量可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

类变量&实例变量

类变量:
也叫静态变量,也就是在变量前加了static的变量;(静态成员变量)
实例变量:
也叫对象变量,即没加static的变量;(非静态成员变量)
区别:

  1. 类变量:是所有对象共有,某一个对象将其改变,其他对象得到的就是改变后的结果;
  2. 实例变量:是对象私有,某一个对象将其改变,不影响其他对象;

补充:类变量和实例变量都属于全局变量
同一个类的对象使用不同的内存段,但静态成员共享的内存空间

实例&对象

1.实例化:
在面向对象的程序设计中,通常把用类创建对象的过程称为实例化,
格式:类名 对象名 = new 类名(参数);
2.实例
在面向对象程序设计中,“类”在实例化之后叫做一个“实例”
对象:一般是指类在内存中装载的实例,具有相关的成员变量和成员函数。
3.实例和对象的区别
实例和对象基本上是同义词,它们常常可以互相使用。对象就是类的实例,所有的对象都是实例,但并不是所有的实例都是对象。

构造方法

构造方法

  1. 作用:
    a创建对象
    b给对象的属性进行初始化
  2. 格式:
    a方法名与类名相同
    b没有返回值类型,连void都没有
    c没有具体的返回值,可以是return
  3. 注意事项:
    a:如果没有明确给出构造方法,那么系统会默认给出一个无参构造方法
    b:只要明确给出构造方法,那么系统不会再提供无参构造方法(推荐手动给出无参构造)
    c:构造方法的重载体现在参数列表的不同
  4. 给私有的成员变量赋值的方式
    a静态代码块初始化静态成员变量,b显示初始化(在定义成员变量是赋值)c构造代码块初始化,
    d构造方法初始化,e通过set方法赋值,f通过反射操作父类的私有成员
  5. 构造方法和set方法区别
    构造方法:在创建对象时给成员变量赋值,并且只能赋值一次
    set方法:在创建完对象以后对成员变量的值进行修改,或赋值,可以多次
    最终目的:都是给成员变量赋值,只不过实现方法不同

this&super

this

  1. 概念:
    a:this代表本类对象的引用。(其所在方法所属对象的引用)
    b:那个对象调用方法,方法内部就有一个隐含的this代表这个对象(谁调用,this就代表谁)
  2. 作用:通过this关键字可以直接调用成员(成员方法,成员变量)
  3. 什么时候用:用于解决局部隐藏成员变量变量值的问题

super

  1. 概念:super关键字,代表父类的内存空间标识。
  2. 什么时候用:
    a:当父类中出现同名成员可以用super区分b:子类调用父类的构造方法可以用super

this与super的区别

  1. 概念:
    this关键字,代表本类对象的引用,super关键字,代表父类的内存空间标识。
  2. 调用方式
    A:this
    通过this可以直接调用本类的构造方法,成员变量,成员方法
    构造方法:this.(参数)
    成员变量:this.变量名
    成员方法:this.方法名()
    B:super
    通过super可以直接调用父类的构造方法,成员变量,成员方法
    构造方法:super.(参数)
    成员变量:super.变量名
    成员方法:super.方法名()

static关键字

1.概述:static可以修饰类的成员(成员变量,成员方法,代码块);被static修饰的成员可以被所有对象共享
2.什么时候使用:多个对象使用某一个数据时,我们就可以用static修饰
3.特点:
A:被static修饰的内容随着类的加载而加载,优先于对象存在,
B:可以直接通过类名调用,C:被该类所有对象共享
4.注意事项

  1. 在静态方法中是没有this关键字(因为静态是随着类的加载而加载,而this是对象创建才存在的)
  2. 静态方法只能访问静态成员变量和静态成员方法。(静态只能访问静态;非静态方法可以调用静态成员和非静态成员)
  3. 静态内容可以通过对象调用,也可以通过类名调用。(推荐使用类名调用)

跳转语句

break:中断的意思

A:用在循环和switch语句中,离开此应用场景无意义。
B:作用
a:跳出单层循环
b:跳出多层循环,需要标签语句的配合

continue:继续

A :用在循环中,离开此应用场景无意义。
B:作用
a:跳出单层循环的一次,可以继续下一次

return:返回

1:用于结束方法的
2:一旦遇到return,程序就不会在继续往后执

类的组成:

成员变量
构造方法
* 无参构造方法
* 带参构造方法
成员方法
* getXXX()
* setXXXX()
* 。。。。。。。

匿名对象

就是没有名字的对象,是对象的一种简化表示形式。
使用情况:1对象调用方法仅仅一次的时候
2.作为实际参数传递

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

推荐阅读更多精彩内容

  • java继承 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继...
    863cda997e42阅读 651评论 0 1
  • 标签(空格分隔): Java面向对象 1. 面向对象的特征有哪些方面? 抽象:抽象就是找出一些事物的相似和共性之处...
    outSiderYN阅读 6,310评论 0 6
  • 08.01_面向对象(代码块的概述和分类)(了解)(面试的时候会问,开发不用或者很少用) A:代码块概述在Java...
    苦笑男神阅读 190评论 0 1
  • 所有的父母都爱孩子,但不是每个人都知道如何去爱。 很多父母因为孩子的各种问题抓狂时,很想有一剂灵丹妙药给孩子吃下,...
    蓝心老师阅读 222评论 0 0
  • 当代社会,在互联网购买理财产品已经不是新鲜事了,但是理财产品也需要精挑细选,不能盲目购买。那么,互联网理财产品购买...
    8846482d58c9阅读 153评论 0 0