zoukankan      html  css  js  c++  java
  • 抽象类,常用类

    一.多态:--> 一种事物的多种形态|多种表现形式
    多态的前提:
    类的继承
    接口的实现
    多态的体现|表现形式:
    父类的引用指向子类对象
    多态的使用:
    父类的引用在调用方法,调用子类中重写的方法

    注意:父类引用对子类新增的功能不可用
    如果子类中没有重写方法,多态没有意义

    多态使用成员:
    成员变量:
    编译--->运行看父类|左边|类型
    成员方法:
    编译看父类,运行看子类
    编译看类型,运行找对象
    编译看左边,运行看右边

    二.转型:---> java是一门强类型的语言
    基本数据转型: 自动类型提升 强制类型转换
    引用数据类型: 向上转型(自动) 向下转型(强制)
    小范围类型--->子类
    大范围类型--->父类

    孔子装爹案例:
    class 孔子爹{void teach(){做生意};}
    class 孔子{void teach(){论语}; void play(){吃鸡};}
    有一个来请孔子爹教学,不巧孔子爹外出了,孔子化妆装成孔子爹的样子,去授课
    //向上转型 化妆
    KongZiDie k=new KongZi();
    k.teach(); //论语
    先于学生一起玩游戏,但是孔子爹不会游戏,只有孔子会,需要卸妆变成孔子类型调用play功能
    //向下转型 卸妆
    KongZi kongzi=(KongZi)k;
    kongzi.play();

    向下转型:--->当需要调用子类独有功能,需要向下转型

    ClassCastException 类型转换异常

    避免向下转型转型错误,出现类型转换异常的问题--->instanceof
    引用 instanceof 类型
    判断前面的引用是否为后面类型的对象|子类对象
    如果是,返回true;如果不是,返回false
    编译只检查引用的类型与后面的类型是否在一条继承链上,如果是语法就没有错误,编写时不报错(但是运行时出错)
    面向对象:
    封装: 隐藏内部的实现细节,对外提供公共的访问方式
    继承: 子类一旦继承父类,就自动拥有父类的内容+子类的扩展
    多态: 结合继承,和方法的重写,封装可以提高代码的复用性和扩展性

    三.接口:-->interface(是一种特殊的抽象类,能用接口就用接口)

    1.7之前:
    静态的公共的常量+公共的抽象的方法
    属性:
    public static final默认修饰符,可以选择性的省略
    功能:
    public abstract 默认修饰符,可以选择性的省略
    1.8之后:
    1.静态方法:接口名字. 使用
    2.默认方法:实现类的对象使用
    注意:
    1.类的继承,接口需要实现
    2.抽象方法必须被重写
    3.使用接口中的内容:接口需要实现->implements,类要用extends继承
    具体的实现类:重写接口中的所有抽象方法+按需新增
    抽象的实现类: 按需重写抽象方法+按需新增
    4.单继承,一个类只能继承一个类,接口可以多实现,实现了接口,就拥有了接口中定义的功能
    5.一个类先继承父类后实现接口,先继承后实现
    6.避免实现的多个接口中定义了相同的功能
    7.接口可以多继承其他接口,不能是实现接口的(实现:对抽象方法方法体的实现)
    8.接口不能实例化
    接口的优点: ---> (根据不同的需求:定义类,抽象类,接口,推荐使用接口)
    避免单继承的局限性 (推荐使用接口)
    提高代码的复用性
    解耦:高内聚低耦合
    定义规范

    四.抽象类:--->被abstract修饰的类
    抽象方法:--->被abstract修饰的方法
    抽象类中方法没有方法体
    必须存在抽象类中

    注意:
    1.抽象类不能实例化
    2.抽象方法必须存在于抽象类中
    3.抽象类中可以存在抽象方法,可以存在具体方法(有方法体的方法)
    4.通过子类使用抽象类
    具体子类:重写抽象父类中的所有抽象方法+按需新增
    抽象子类:按需重写抽象方法+按需新增
    5.一个抽象方法如果已经被冲写过,就可以不需要再次重写
    6.抽象方法必须被重写
    7.abstract不能和static,final,private,native一起使用

    五.内部类:类中定义类--->一个类中的某个成员,也为一个事物,可以把这个事物定义为一个类,内部的这个类就是内部类
    分类:
    成员内部类
    局部内部类
    静态内部类:-->静态的内部类中可以定义静态的内容 ---> 静态的内部类中不可以直接使用外部类的成员,因为内部类是静态的,通过对象使用
    私有内部类:-->私有的内部类只能当前的外部类中使用,其他类中无法使用
    匿名内部类

    成员内部类:内部类定义在外部的成员位置
    成员:可以使用成员修饰符 public..static..
    类:可以实现接口,继承类

    内部类中可以使用外部类中的所有内容的(包括私有的)
    成员内部类中不能定义静态的内容除了静态的常量
    外部类中通过内部类对象使用内部类中的成员

  • 相关阅读:
    vbScript,DateDiff 关于DateDiff()函数
    phpcms 3.0.0文件上传漏洞
    测试Web应用程序是否存在跨站点脚本漏洞
    phpcms 3.0.0文件上传漏洞
    谈Windows和Linux和平性之争
    用一个实例讲解DB2数据库游标轮回的成绩
    Oracle新技能对Linux意味着什么?
    启迪版:Elive 1.7.5 (不颠簸版本)颁发揭晓
    刊行版:SystemRescueCd 1.0.3公布
    把linux插手到域
  • 原文地址:https://www.cnblogs.com/jj-01/p/11186132.html
Copyright © 2011-2022 走看看