「java女娲」女娲创人类
今天给各位分享java女娲的知识,其中也会对女娲创人类进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java新手,没明白定义java类的时候,里面的main怎么能调用所在的那个类?这不是循环调用么?
- 2、java工厂模式,懂的人进
- 3、JAVA中,类、对象、实体、实体类、实体对象之间存在怎样的联系??请高手做形象的解释。
java新手,没明白定义java类的时候,里面的main怎么能调用所在的那个类?这不是循环调用么?
main是个运行的入口。 当你运行时。就会自动进入到main方法。
类名第1个字母要大写。test改为Test。
Test pack=new Test();
Test是当前类。new Test()是创建当前类的一个对象。假如Test是女娲。她每new1次,就能造出一个人。pack就是那个人的名字。
java工厂模式,懂的人进
举两个例子以快速明白Java中的简单工厂模式:
女娲抟土造人
话说:“天地开辟,未有人民,女娲抟土为人。”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面。
女娲造人,这就是简单工厂模式的应用。
首先,在这个造人的思想里面,有几个重要的角色:女娲本身、抽象的人的概念和女娲所造出的一个个具体的人。
1.)女娲是一个工厂类,也就是简单工厂模式的核心角色。
2.)具休的一个个的人,包括张三,李四等。这些人便是简单工厂模式里面的具体产品角色
3.)抽象的人是最早只存在于女娲的头脑里的一个想法,女娲按照这个想法造出的一个个具体的人,便都符合这个抽象的人的定义。换言之,这个抽象的想法规定了所有具体的人必须都有的接口(特征或者功能)
其UML类图出下所示:
理解了上面的这些东西,再来理解下面的例子,对照理解,相信看完这篇文章,便对java简单工厂模式有一个很好的理解:
有一个农场公司,专门向市场销售各类水果,在这个系统里需要描述下列水果:
葡萄 Grape
草莓 Stuawberry
苹果 Apple
水果与其他植物不同,最终可以采摘食用,那么一个自然的做法是建立一个各种水果都适用的接口,以便与其他农场里的植物区分开来,
此时,则是为水果类声明了一个接口,表现在代码上:
1 public interface Fruit {
2 // 生长
3 void grow();
4 // 收获
5 void harvest();
6 // 种植
7 void plant();
8 }
9
10
水果接口规定出所有的水果必须实现的接口,包括任何水果类必须具备的方法plant(),grow(),和harvest();
Apple类是水果类的一种,因此它实现了水果接口所声明的所有方法。另处,由于苹果是多年生植物,因此多出一个treeAge性质,描述苹果的树龄。代码如下所示:
package fac;
public class Apple implements Fruit { // 通过implements实现接口Fruit
private int treeAge;
public void grow() {
log( " Apple is growing " );
}
public void harvest() {
log( " Apple has been harvested " );
}
public void plant() {
log( " Apple ha been planted " );
}
public static void log(String msg) {
System.out.println(msg);
}
public int getTreeAge() {
return treeAge;
}
public void setTreeAge( int treeAge) {
this .treeAge = treeAge;
}
}
同理,葡萄 Grape:
package fac;
public class Grape implements Fruit{
private boolean seedless;
public void grow(){
log("Grape is growing.");
}
public void harvest(){
log("Grape has been harvested");
}
public void plant(){
log("Grape ha been planted");
}
public static void log(String msg){
System.out.println(msg);
}
public boolean isSeedless() {
return seedless;
}
public void setSeedless(boolean seedless) {
this.seedless = seedless;
}
}
草莓 Stuawberry:
package fac;
public class Strawberry implements Fruit{
public void grow(){
log("Strawberry is growing");
}
public void harvest(){
log("Strawberry has been harvested");
}
public void plant(){
log("Strawberry has been planted");
}
public static void log(String msg){
System.out.println(msg);
}
}
农场园丁也是系统的一部分,由一个类来代表,FruitGardener类,代码如下:
package fac;
public class FruitGardener{
public static Fruit factory(String which)throws Exception{
if(which.equalsIgnoreCase("apple")){
return new Apple();
}else if(which.equalsIgnoreCase("strawberry")){
return new Strawberry();
}else if (which.equalsIgnoreCase("grape")){
return new Grape();
}else{
throw new Exception("Bad fruit request");
}
}
}
这时有人来果园玩,和园丁说,给我们介绍下你的水果吧。于是园丁:
package fac;
public class People {
public static void main(String[] args) throws Exception {
FruitGardener fg=new FruitGardener();
Fruit ap=fg.factory("Apple");
ap.grow();
Fruit gp=fg.factory("Grape");
gp.plant();
Fruit dd=fg.factory("ddd");//抛出Bad fruit request异常
}
}
(注:以上代码在JDK5.0,Myeclise3.2下编译通过)
类比两个例子,园丁就相当于女娲,而水果就相当于具体的人,接口水果类就相当于存在于类女娲思想里的人的抽象概念。
由以上两个例子可得出,简单工厂模式需要由以下角色组成:
接口
接口的实现类(简单工厂模式里面的具体产品角色)
工厂
理解了以下两个例子,再来看第三个例子:
注意对比以下三个实例的不同
实例1:
package org.jzkangta.factorydemo01;
//定义接口
interface Car{
public void run();
public void stop();
}
//具体实现类
class Benz implements Car{
public void run(){
System.out.println("Benz开始启动了。。。。。");
}
public void stop(){
System.out.println("Benz停车了。。。。。");
}
}
//具体实现类
class Ford implements Car{
public void run(){
System.out.println("Ford开始启动了。。。");
}
public void stop(){
System.out.println("Ford停车了。。。。");
}
}
//工厂
class Factory{
public static Car getCarInstance(){
return new Ford();
}
}
public class FactoryDemo01 {
public static void main(String[] args) {
Car c=Factory.getCarInstance();
c.run();
c.stop();
}
}
实例二:
package fac;
//定义接口
interface Car{
public void run();
public void stop();
}
//具体实现类
class Benz implements Car{
public void run(){
System.out.println("Benz开始启动了。。。。。");
}
public void stop(){
System.out.println("Benz停车了。。。。。");
}
}
class Ford implements Car{
public void run(){
System.out.println("Ford开始启动了。。。");
}
public void stop(){
System.out.println("Ford停车了。。。。");
}
}
//工厂
class Factory{
public static Car getCarInstance(String type){
Car c=null;
if("Benz".equals(type)){
c=new Benz();
}
if("Ford".equals(type)){
c=new Ford();
}
return c;
}
}
public class FactoryDemo02 {
public static void main(String[] args) {
Car c=Factory.getCarInstance("Benz");
if(c!=null){
c.run();
c.stop();
}else{
System.out.println("造不了这种汽车。。。");
}
}
}
实例三:
interface Car{
public void run();
public void stop();
}
class Benz implements Car{
public void run(){
System.out.println("Benz开始启动了。。。。。");
}
public void stop(){
System.out.println("Benz停车了。。。。。");
}
}
class Ford implements Car{
public void run(){
System.out.println("Ford开始启动了。。。");
}
public void stop(){
System.out.println("Ford停车了。。。。");
}
}
class Toyota implements Car{
public void run(){
System.out.println("Toyota开始启动了。。。");
}
public void stop(){
System.out.println("Toyota停车了。。。。");
}
}
class Factory{
public static Car getCarInstance(String type){
Car c=null;
try {
c=(Car)Class.forName("org.jzkangta.factorydemo03."+type).newInstance();//利用反射得到汽车类型
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return c;
}
}
public class FactoryDemo03 {
public static void main(String[] args) {
Car c=Factory.getCarInstance("Toyota");
if(c!=null){
c.run();
c.stop();
}else{
System.out.println("造不了这种汽车。。。");
}
}
}
对比三个实例:
实例一,虽然实现了简单工厂,但每次只能得到一种汽车,如果我们想换一种,就得修改工厂,太不方便,而实例二则改变了这种情况,便得我们可以按照我们的需要更换汽车,但我们所更换的汽车必须是实现类中有的,如果我们想要增加一种汽车的时候,我们还是得更改工厂,通过改进,实例三利用反射机制,得到汽车类型,这样当我们需要增加一种新的汽车时,就无需要再修改工厂,而只需要增加要实现的类即可。也就是说要增加什么样的汽车直接增加这个汽车的类即可,而无需改变工厂。从而达到了工厂分离的效果。
JAVA中,类、对象、实体、实体类、实体对象之间存在怎样的联系??请高手做形象的解释。
类: java中的类 一般来存放实现了某些功能的代码 代码片段,是程序的基础元素
对象:对象是一个很抽象的概念,比如 一个java类 实例化以后可以称为一个对象 对象一般指的就是一个类创建出来的实例 比如
public class A{}
那么 A是一个类
A a =new A();
那么 这里的a 指的就是A这个类的实例 也就是对象 通过对象a 可以访问A类下面的 非私有字段 和方法
实体类:一般会与实体对象一起出现 对应数据库 或者其他数据源中的 一张表 俗称为一个对象
这里的实体类对象和实体类 打个简单的比方
实体类 就好像事一张白纸 白纸的获得 要从厂商那边取得 也就是我们去买 在程序里 就是用的关键字new 当new了以后 就好像是我们从生产厂商那里买来了一张白纸 当然 白纸上什么都没有
有了这张白纸以后 我们就可以在白纸上给它赋值 让它独一无二 也就是对实体类进行封装数据
每一张白纸 从我们购买的时候 都是一样的对象 都是一个字都没有的白纸 但是 后来通过业务处理 使得白纸上都有了自己的东西 也就是对象实体中的数据封装
还可以把实体类比作一个模板 创建出来的实例对象 都是跟这个模板一样的 至于 模板里面填写的内容 那就要看你的赋值了 就拿最简单的简历来说 一般都会有简历模板 我们从网上下载一个简历模板 就是创建了一个实体类的对象 而这个简历模板 就相当于一个实体类 接下来 我们对下载下来的模板进行操作 也就是对 实体类对象进行操作 对实体类对象操作 是不会影响实体类的 这个例子里面 应该一目了然 然后 根据个人信息不同 我们再模板上填写的信息也不同 比如 姓名 年龄 等等 按照个人的信息来填写 所以 就会产生实体类的对象的属性 不同 相信这样解释 你应该可以理解了吧 关键还是要靠多写训练 熟能生巧 运用以后才能知道这些东西存在的奥妙
关于java女娲和女娲创人类的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。