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

JAVA06

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

JAVA06

1.继承
 继承的关键字是extends
 继承是java中类与类之间的一种关系
使用继承的好处就是可以用父类封装所有子类的公共代码,让子类继承,实现代码复用
 发生继承的类称为子类,被继承的类称为父类
 一个类只能继承一个父类,但是一个父类可以有多个子类
如果一个类没有显示的继承父类,则隐式继承Object类
java'不支持多继承,只支持单继承,但支持多级继承
 任何一个继承体系的顶层是Object类,Object类称为祖先类,上帝类
构造方法中的第一行处有条隐式指令super(),调用其父类的构造方法
this和super的区别
    this是指向当前对象,super是指向当前父类对象
    this和super的使用语法
        1.调用构造方法;(只能在构造方法中调用,而且必须出现在第一行)
          this();可以使用this()调用本类构造方法
          super();可以使用super()调用父类构造方法
 子类可以继承父类的非私有成员(非private修饰)
 父类的构造方法不能被子类继承,但可以被子类调用,且子类的无参构造方法中会默认调用父类的无参构造方法
 能发生继承关系的类在逻辑上应该具有一种“is  a”的关系
    狗 is a 动物      猫 is a 动物
    枪 is a 武器     刀 is a 武器


面向对象整理
面向过程和面向对象的区别
    面向过程编程思想不考虑封装,继承,多态这些事情,直接定义数据为静态变量,用静态函数操作数据,基于过程编程。面向过程编程,代码不具有可复用性和可扩展性。
    面向对象编程思想需要先抽象出实体的结构,并用类进行封装,用成员变量表达实体的属性,用成员方法封装对实体属性的操作、提供构造方法构造对象,基于对象编程。面向对象编程,代码具有可复用性和可扩展性。
    举例:实现汽车租赁系统
面向过程的思想:定义多个静态数组,存储汽车各项数据,直接定义静态函数实现各种业务过程
面向对象的思想:先抽象出汽车实体的结构,并使用汽车类进行封装。然后创建汽车数组存储汽车实体的数据,再考虑业务功能的实现。

面向对象的三大特征
1.封装
用成员变量来描述对象的属性,并用private进行私有化封装,不对外暴露对象的属性。防止外部对属性误操作
用成员方法来封装对属性的操作,并暴露给外部调用,典型的就是setter和getter,一个是提供给外部进行属性设置,一个是提供给外部读取属性的值
2.继承
     1.继承是java中类与类之间的一种关系
    2.继承的关键字是extends
    3.发生继承的类称为子类,被继承的类称为父类
     4.java不支持多继承,只支持单继承,但支持多级继承。一个类只能继承一个父类,但是一个父类可以有多个子类
     5.如果一个类没有显示的继承父类,则隐式继承Object类
    6.子类可以继承父类的非私有(非private修饰)成员
    7.父类的构造方法子类不能继承,但可以使用super()调用
    8.父类的静态成员与继承无关
    9.如果父类中有抽象方法,子类必须要重写,除非子类也是抽象类,让子类的子类去重写(实现)
3.多态(先有继承而后有多态,多态的反义词是单态)
指针的多态(数组的多态,参数的多态,返回值的多态归根到底都是指针的多态)
    如果指针是具体的子类类型,则指针是单态指针,只能指向具体的子类对象
    如果指针是抽象的父类类型,则指针是多态指针,可以指向任意的子类对象
方法的多态(1.基于重载实现 2.基于重写实现)
    重载是编译时多态的体现
    重写是运行时多态的体现

重载和重写的区别
重载和重写都是方法多态的体现
    重载(overload)是编译时多态的体现
        1.重载发生在一个类中,java不允许一个类中的多个方法同名,但必须满足重载的要求
        2.重载要求:方法名相同,但是方法的参数列表不同(可以是参数个数不同,或者是参数类型不同)
        3.静态方法,构造方法,成员方法都可以重载
    重写(override)是运行时多态的体现
        1.重写发生在子类与父类之间,子类重写父类的方法,其目的是:当使用父类型的指针调用子类方法的时候,可以无需做向下转型。
        2.子类方法与父类方法同名,访问修饰符要大于等于父类方法
        3.访问修饰符要大于等于父类方法
        4.参数个数必须与父类一样,参数类型可以小于等于父类方法的参数类型
        5.返回值类型可以小于等于父类方法的返回值类型

抽象类和抽象方法的关系
    1.抽象类和抽象方法都需要使用abstract关键字修饰
    2.抽象方法必须出现在抽象类中,抽象方法没有方法体,必须被子类重写
    3.抽象类中可以有抽象方法,也可以没有

抽象类和普通类的区别
    普通类可以实例化,也可以被继承
    抽象类不可以实例化,只能被继承
    (实例化就是new构造方法()创建对象)

向上转型和向下转型的区别
向上转型
    1.将子类对象/指针赋给父类指针的语句称为“向上转型,隐式的”
    2.继承是向上转型的前提,向上转型的目的是为了实现多态的指针
    3.向上转型的副作用:指针无法访问下级对象中的成员(除非发生了重写)
向下转向
    1.将法律型指针赋给子类型指针的语法称为“向下转型”,需要显示的强制转换,通常伴随着instanceof做类型判断,否则会出现ClsaaCastException(类型转换异常)
     2.指针向下转型为下级类型,就又可以访问子类中特有成员了(非重写的成员方法)

访问权限修饰符
    修饰符            当前类        同包        子类        其他包
    private           私有的    可见√        不可见×    不可见×    不可见×
    (default)   同包可见    可见√        可见√        不可见×    不可见×
    protected     受保护的    可见√        可见√        可见√        不可见×
    private          公有的    可见√        可见√        可见√        可见√
private的特点:只有本类可见
(default)的特点:只有同包可见
protect的特点:子类可见
public的特点:任何地方都可见

抽象类和接口的区别    

接口
1.接口是一种源代码文件    
    定义类的关键字是class
    定义接口的关键字是interface
2.接口的出现让java也能够实现多继承,一个类只能继承一个父类,但是可以继承多个接口
    子类继承父类,关键字是extends
    子类实现接口,关键字是implements
3.接口与抽象类进行比较
    相同点:
        1.都可以作为指针的类型,实现多态指针
        2.都不可以实例化
    不同点:
        1.抽象类用class定义,接口用interface定义
        2.抽象类用extends继承,接口用implements实现
        3.类只能单继承,接口可以多继承(实现)
        4.抽象类虽然不可以被实例化,但是抽象类可以有构造方法,接口不可以有构造方法
        5.抽象类可以有抽象方法,也可以有具体方法,接口只能有抽象方法,而且接口中所有的方法默认是“public abstract”修饰的
        6.抽象类可以有成员变量,接口不能有成员变量,只能有静态常量

如何理解接口?如何理解面向接口编程

代码中存在依赖和调用关系,应该面向接口编程
调用方--依赖关系--被调用方;
调用方关心什么:方法名,参数列表,返回值
调用方不关心什么:方法的实现

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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