码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-07-22 21:21:39      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

课程回顾:

接口:
1、属性:public\static\final
2、方法:public\abstract

多态:
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、最佳匹配性原则(重载)

 

 

 

 


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

 

 

 

 

 


 

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

标签:

原文地址:http://www.cnblogs.com/weigongcheng/p/5696851.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!