zoukankan      html  css  js  c++  java
  • 【幻化万千戏红尘】qianfengDay10-java基础学习:成员内部类、静态内部类、局部和匿名内部类,设计模式之简单工厂模式

    课程回顾:

    接口:
    1、属性:publicstaticfinal
    2、方法:publicabstract

    多态:
    1、静态化(编译时)多态
    重载
    2、动态化(运行时)多态
    重写
    对象转型
     1、向上转型
     2、向下转型

    今日内容:
    内部类:定义在类的内部的类
    1、成员内部类
    格式:[修饰符] class 类名 {

    }
    内部不能有静态的属性和方法,
    可以访问外部类的属性,
    也可以调用外部类的方法

    在静态方法中的使用格式:
    外部类 外对象=new 外部类();
    成员内部类 对象名=外对象.new 成员内部类();


    2、静态内部类
    格式:
    [修饰符] static class 类名{

    }
    内部可以有静态/非静态的属性和方法
    可以调用外部类的静态属性和方法
    但是不能调用外部类非静态的属性和方法

    使用:
    外部类名.静态内部类名 对象=new 外部类名.静态内部类();

    3、局部内部类
    格式:class 类名{}
    定义在方法内部的类

    调用局部变量时,要求局部变量必须是final修饰的
    使用的时候,只能在对应的方法内部

    4、匿名内部类
    格式:new 类名/接口名(){重写的方法}
    匿名内部类创建的是一个子类或实现类
    并且生成一个对象
    常常用来实例化抽象类或接口
    匿名内部类没有类名,编译之后产生的是以数字命名的字节码文件


    内部接口:定义在类内部的接口
    可以在类的内部定义一个接口
    接口可以继承多个接口


    练习:请定义一个接口IStudy
    拥有方法:study(),study(String msg);
    创建一个类Student
    属性若干,方法自定义
    要求有一个方法:public void showStudy(IStudy ist)
    最后创建测试类,并且调用Student的showStudy方法

    设计模式之简单工厂模式:
    涉及到的角色:
    1、所有产品的父类:产品类都共同拥有的属性和方法的类
    2、产品类:所涉及到的产品类
    3、工厂类:提供静态方法,用于创建对象


    思路:这种模式是为了实现解耦,就是说在使用具体对象的时候,
    不需要关心对象的创建过程
    只需要根据指定的指令,获取对应的对象就可以了
    对象的具体创建时通过工厂类的静态方法完成的
    因为要涉及到多个产品类的对象返回,所以我们使用父类
    所以的子类对象都可以充当父类对象

    简单工厂体现的是面向对象的:对象转型(向上和向下)


    练习:卖饮料的

    面向对象小结:
    面向对象是一种思想
    面向对象三大特征:封装、继承、多态
    万事万物皆对象
    面向对象2大核心:
    1、类:抽象、模板、概念、定义:所有对象共同拥有的属性和方法的组合
    2、对象:具体的、实例

    类的格式:
    [修饰符] class 类名 [extends 类名][implements 接口名,……]{
     [属性]
     [修饰符] 数据类型 属性名;
     //public/protected/private/final/static
     [方法]
     [修饰符1,修饰符2] 返回值类型 方法名([形式参数列表]){
      代码块;
     }
     [构造方法]
     [修饰符] 类名([形式参数列表]){
      代码块;
     }
    }
    对象创建格式:
    类名 对象名=[new 类名([实际参数列表])];


    public/final/abstract可以修饰类

    this用法:本类的
    1、代指本类对象
    可以用来区分同名的成员变量和局部变量

    2、调用本类的其它的构造方法
    只能在构造方法中
    必须在第一行
    格式:this([实际参数列表]);

    属性的封装:
    1、属性私有
    2、公有的get和set方法

    标准类javaBean:
    1、属性私有
    2、公有的get和set方法
    3、公有的无参构造方法

    static用法:静态的
    1、修饰属性:静态属性
    2、修饰方法:静态方法
    3、修饰构造代码块:静态代码块
    4、修饰内部类:静态内部类


    访问修饰符:
    1、public:公共
    2、protected:受保护
    3、default/package(只是表示的是没有访问修饰符的状态):默认
    4、private:私有

    包:
    1、package 声明包
    2、import  导入包


    继承:一个类拥有另一个类的属性和方法
    extends
    java只允许单继承,但是可以继承的传递性

    super用法:子类中
    1、调用父类中的属性和方法
    2、调用父类的构造方法
    只能在子类的构造方法中
    只能在第一行
    格式:super([实际参数列表]);

    重写:子类增强父类中的方法
    1、子类中,重写的是父类的方法
    2、访问修饰符不能比父类的更严格
    3、静态/非静态、返回值类型、方法名、形式参数列表都要相同


    Object类:所有类的父类
    常用方法:
    1、hashCode
    2、toString
    3、equals
    4、getClass


    final用法:最终的
    1、修饰变量:常量,只能赋值一次
    2、修饰方法:不能被重写
    3、修饰类:不能被继承


    abstract用法:抽象的
    1、修饰方法:抽象方法
    格式:[修饰符] abstract 返回类型 方法名([形式参数列表]);
    抽象方法只有方法的声明,没有方法的实现(没有方法体)
    2、修饰类:抽象类
    抽象类不能实例化
    抽象类不一定有抽象方法
    有抽象方法的类一定是抽象类

    接口:由常量和抽象方法组成的结构体
    属性:默认拥有public、static、final
    方法:默认拥有public、abstract

    多态:多种形态
    1、静态化(编译时)多态
    重载
    2、动态化(运行时)多态
    重写
    对象转型
     1、向上转型:子类到父类,自动
     2、向下转型:父类到子类,强制
     一般都会结合instanceof使用
     
    instanceof:用法
    验证对象是否属于某种类型
    格式:对象名 instanceof 类名
     

    内部类:定义在类内部的类
    1、成员内部类
    内部不能使用静态的
    成员内部类名 对象=外部类对象名.new 类名();

    2、匿名内部类
    格式:new 类名/接口名(){重写的方法}
    只能使用一次,没有类名,产生是一个对象

    3、静态内部类
    内部不能使用外部类的非静态属性和方法

    4、局部内部类
    定义在方法内部的,也只能在方法中使用
    操作局部变量时,要求局部变量是final修饰的

    设计模式:
    1、单例模式:保证类的唯一实例
    规则:
    1、私有构造方法
    2、私有静态本类对象
    3、公有静态方法(返回本类对象)

    2、简单工厂模式:实现解耦
    规则:
    1、产品类
    2、产品类的父类
    3、工厂类(静态方法)
    体现:对象转型

    JAVA的原则:
    1、最小作用域最强原则(就近原则)
    2、最佳匹配性原则(重载)


    下周内容:
    数组
    异常
    常用类
    集合


     

  • 相关阅读:
    社交需求和社交产品的更替
    腾讯产培生面经
    【C++基础】类class
    【C++基础】结构struct
    【C++基础】C-串知识整理
    GeoServer war包在tomcat7中配置遇到的一个问题
    pgrouting 2.0 的环境配置
    阿里2014年9月笔试中的一个算法设计题--擦黑板剩余数字
    VisualSVN Server的启动关闭脚本
    二叉树遍历(前序、中序、后序)的递归及非递归实现(小结)
  • 原文地址:https://www.cnblogs.com/weigongcheng/p/5696851.html
Copyright © 2011-2022 走看看