栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA SE(基础 第3篇) 面向对象编程(中级)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA SE(基础 第3篇) 面向对象编程(中级)

一、封装

1. 封装:隐藏实现细节; 可以对数据进行验证,保证安全合理。 把抽象出来的数据(属性)和对数据的操作(方法)封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作(方法),才能对数据进行操作。

2.封装实现步骤:
  • 将属性私有化
  • 提供一个公共的set方法,用于对属性判断并赋值
  • 提供一个公共的get方法,用于获取属性的值

 

二、继承

1.  继承:代码的复用性提高了; 代码的扩展性和维护性提高了。

 

2.继承细节:
  • 子类继承了所有的属性和方法,但是私有属性和方法不能在子类直接访问,要通过父类提供公共方法访问。
  • 子类必须调用父类的构造器,完成父类的初始化。
  • 当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过。
  • java所有类都是Object的子类
  • 父类构造器的调用不仅限于直接父类,将一直向上追溯到Object类(顶级父类)
  • 子类最多只能继承一个父类(直接继承),即单继承。
  • 不能滥用继承,子类和父类之间必须满足is-a的逻辑关系。

3.   继承本质: 

 

4.super: 代表父类的引用,用于访问父类的属性,方法,构造器。

  • 访问父类的属性,但不能访问父类私有的属性。
  • 访问父类的方法,但不能访问父类的私有方法。(super.方法名)
  • 访问父类的构造器,只能放在构造器的第一句

5.super细节:
  • 分工明确,父类属性由父类初始化,子类属性由子类初始化
  • 当子类中有和父类中的成员重名时,为了访问父类的成员,必须通过super,如果没有重名,使用super,this,直接访问是一样的效果。
  • super的访问不限于直接父类,如果爷类和本类中有同名的成员,也可以用super去访问爷类的成员;如果上级类中都有同名的成员,使用super遵循就近原则,也要遵循访问权限的相关规则。

 

三、 

1.方法重写(覆盖override):子类有一个方法,和父类的某个方法的名称,返回类型,参数一样。

2.方法重写细节:
  • 子类方法的参数,方法名名称,要和父类方法的参数,方法名称完全一样。
  • 子类方法的返回类型和父类的返回类型一样,或者是父类的返回类型的子类。
  • 子类方法不能缩小父类方法的权限。

四、多态

1.  多态:方法或对象具有多种形态,是面向对象的基本三大特征,是建立在封装和继承的基础之上。

2.对象的多态: 
  • 一个对象的编译类型和运行类型可以不一致
  • 编译类型在定义对象时,就确定了,不能改变
  • 运行类型可以变化的
  • 编译类型看定义时=号的左边,运行类型=号的右边
  • Animal animal=new Dog();    编译类型是Animal  ,运行类型是Dog().

3.  多态细节:
  • 多态的前提是两个对象是继承关系。

  • 多态的向上转型:
  • 父类的引用指向了子类的对象:
  • 可以调用父类的所有成员(遵守访问权限)
  • 但是不能调用子类的特有的成员,因为在编译阶段,能调用哪些成员,是由编译类型决定的。
  • 最终的运行效果还要看子类的具体实现,即调用方法时,按照从子类开始查找方法,然后调用。
            

4.多态的向下转型:
  • 语法:子类类型    引用名=(子类类型)  父类引用
  • Cat  cat=(Cat) animal;
  • 只能强转父类的引用,不能强转父类的对象
  • 要求父类的引用必须指向的是当前目标类型的对象
  • 当向下转型后,可以调用子类类型中所有的成员
  • 属性没有重写之说,属性的值看编译类型
  • instanceOf 比较操作符,用于判断对象的运行类型 是否为XX类型或XX类型的子类型

5.  java动态绑定机制(重点)
  • 当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
  • 当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用

6.多态数组: 数组的定义类型为父类类型,里面保存的实际元素类型为子类类型。

 

 

7.多态参数: 方法定义的形参类型为父类类型,实参类型允许为子类类型。

 五、 

1.Object类详解:

(1)==和equals的对比:
  • == 既可以判断基本类型,又可以判断引用类型
  • == 是一个比较运算符
  • ==  如果判断基本类型,判断的是值是否相等
  • ==  如果判断引用类型,判断的是地址是否相等,即判定是不是同一个对象

(2)equals方法:
  • 是Object类中的方法,只能判断引用类型
  • 默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等

 (3)hashCode方法:

(4) toString方法:
  • 默认返回,全类名 + @ +哈希值的十六进制,子类往往重写toString方法,用于返回对象的属性信息
  • 重写toString方法,打印对象或者拼接对象时,都会自动调用该对象的toString形式
  • 当直接输出一个对象时,toString方法会被默认的调用

 (5)finalize方法: 

 

2. 断点调试:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031653.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号