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

Java第九课

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

Java第九课

面向对象的整理: 面向过程和面向对象的区别: 面向过程编程思想不考虑封装、继承、多态这些事情,直接定义数据为静态变量,用静态函数操作这些数据,基于过程编程。面向过程的编程代码不具有可复用性和可扩展性。 面向对象编程思想需要先抽象出实体的结构,并用类进行封装,用成员变量表达实体的属性,用成员方法封装实体属性的操作。提供构造方法构造对象,基于对象编程。面向对象的编程代码具有可复用性和可扩展性。 举例:实现汽车租赁系统 面向过程的思想: 定义多个静态数组,存储汽车各项数据,直接定义静态函数实现各种业务过程 面向对象的思想: 先抽象出汽车实体的结构,并使用汽车类进行封装。然后创建汽车数组存储汽车实体的数据,再考虑业务功能的实现。 面向对象的三大特性:
  1. 封装
  2. 继承
  3. 多态
第一特性:封装 用成员变量来描述对象的属性,并用private进行私有化封装,不对外暴露对象的属性,防止外部误操作属性 用成员方法来封装对属性的操作,并暴露给外部调用。典型的成员方法就是setter和getter,一个是提供给外部进行属性设置,一个是给提供外部进行读取属性的值 第二特性:继承 1.继承的关键字是extends 2.继承是Java中类与类之间的一种关系 使用继承的好处就是可以用父类封装所有子 类的公共代码, 让子类继承, 实现代码复用 3.发生继承的类称为子类, 被继承的类称为父类 4.Java不支持多继承, 只支持单继承, 但支持多级继承,一个类只能继承父类, 但是一 个父类可以有多个子类 5.如果一个类没有显示的继承父类, 则隐式继承Object类 6.子类可以继承父类的非私有成员 7.父类构造方法子类不能继承,但是可以使用super()调用 8.父类的静态成员与继承无关 9.如果父类中有抽象方法,子类中必须重写,除非子类也变成抽象类,让子类的子类去 重写。 第三特性:多态 先用继承而后有多态,多态的反义词是单态 1.指针的多态(指针是引用类型的变量) 如果指针是具体的子类类型,则指针是单态指针,只能指向具体的单态对象, 如果指针是抽象的父类类型,指针是多态指针,可以指向任意的子类的对象 2.方法的多态(1.基于重载实现,2.基于重写实现) 重载是编译时多态的体现 重写是运行时多态的体现
  1. 重载和重写的区别
重载和重写都是方法多态的体现 重载(overload)是编译时多态的体现 1.重载发生在同一个类中、Java允许一个类中的多个方法以重载的方式同名 2.方法名相同,但是方法的参数列表不同(可以是参数的个数不同,或者是参数的类型不同) 3.静态方法、成员方法、构造方法都可以重载 重写(override)是运行是多态的体现
  1. 重写发生在子类与父类之间
  2. 子类重写父类的方法,其目的是:当使用父类型的指针调用子类方法的时候,可以无需做向下转型。
  3. 子类方法的与父类方法同名,访问修饰符要大于等于父类方法
  4. 参数的个数必须与父类一样,参数类型可以小于父类方法的参数类型
  5. 返回值类型可以小于等于父类方法的返回值
  1. 抽象类和抽象方法的关系
  1. 抽象类和抽象方法都需要使用abstract关键字修饰
  2. 抽象方法必须出现在抽象类中、抽象方法没有方法体,必须被子类重写
  3. 抽象类中可以有抽象方法,也可以没有
5.普通类和抽象类的区别 普通类可以实例化(创建对象),也可以被继承。 抽象类不能实例化,只能被继承 实例化就是 new 构造方法()创建对象 6.向上转型和向下转型的区别 向上转型 1.将子类对象/指针赋给父类指针的语法称为”向上转型“,隐式的 2.继承是向上转型的前提,向上转型的目的是为了实现多态的指针 3.向上转型的副作用:指针无法访问下级对象中的成员(除非发生了重写) 向下转型
  1. 将父类型的指针赋给子类型指针的语法称为”向下转型“,需要显示的强制转换,通常伴随着instanceof做类型判断,否则可能会出现ClassCastException(类型转换异常)
  2. 指针向下转型为子类类型,就可以访问子类中特有成员(非重写的成员方法)
7.访问修饰符
修饰符 当前类 同包 子类 其他包
private 私有的 可见√ 不可见× 不可见× 不可见×
default 默认的 可见√ 可见√ 不可见× 不可见×
protected 受保护的 可见√ 可见√ 可见√ 不可见×
public 公有的 可见√ 可见√ 可见√ 可见√
Private的特点:只有本类可见 (default)的特点:只有同包可见 Protected的特点:只有子类可见 Public的特点:任何地方都可见 8.抽象类和接口的区别: 相同点:
  1. 都可以作为指针的类型,实现多态指针
  2. 都不可以实例化
不同点:
  1. 抽象类用abstract class定义,接口用interface定义
  2. 抽象类用extends继承,接口用implements实现
  3. 类只能单继承,接口可以多继承(实现)
  4. 两者虽然不可以被实例化,但是抽象类可以有构造方法,接口不可以有构造方法
  5. 抽象类可以有抽象方法,也可以具体方法,接口只能有抽象方法,而且接口中所有的方法默认是“public abstract”修饰的
  6. 抽象类可以有成员变量,接口不能有成员变量,只能有静态常量
9.final 修饰符 - 最终的 修饰变量,称为常量,值不可以修改 修饰方法,称为最终方法,方法不可以被子类重写 修饰类,称为最终类,类不可以被继承 abstract关键字是否可以与final同时出现 或者问能不能同时用abstract和final修饰类或者方法 !!!不能,1.因为abstract修饰的类称为抽象类,抽象类不能被实例化,只能被继承; 而final是阻止类被继承。 2.abstract修饰的方法称为抽象方法,抽象方法必须被子类重写,而final是阻止子类重写 final修饰的变量真的不能改变吗 如果final修饰的变量是基本数据类型,指向常量池,那么值不可以修改 如果final修饰的变量是引用数据类型,指向堆,那么指针不可被修改,但是指针指向的对象内的成员可以修改

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

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

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