黑马程序员技术交流社区

标题: 编译问题,接口类,枚举类混用 [打印本页]

作者: 工善器    时间: 2013-11-2 16:49
标题: 编译问题,接口类,枚举类混用
package it.cast.java.util;
/*
通过相亲节目来找美女。
需要定义那些类
1.Person ,应该有那些属性?性别用枚举类来表示
2.既然是找美女,那么美以应该是一种标准,,有了这个标准是否要去具体定义什么叫做美?
3。怎么去找美女?通过什么来实现?
美的标准
是不是有瓜子脸:isOvalFace
是不是有好身材:hasFigureWell
思路:
既然是相亲找美女,那么可定要有人, 所有的人都可以定义到Person里面。包括美女
和来相亲的男士。Person 类应该是具有哪些属性?姓名,年龄(20-27之间),性别
根据题目,性别要用枚举类型来表示, 在这里我们尅吧性别类放在Person类里面, 但是
这样的话就是内部类,访问的话相对复杂,我们不在这里设置认为的麻烦,所以就把他
重新定义为一个类。现在有了Person类和Gender枚举类
既然是找美女, 那么IBbeautiful 是一种标准。那么我们就要设置一个借口,代表标准或者规范
,所以就有了一个类,IBeautiful 类。
我们有了接口(规范类),那么必定有另一个类实现它的方法 。就是题目上所说的AestheticalStandard
实现, 所以又有了一个AestheticalStandard类。
此处复写的方法为判断两个标准:
是否是瓜子脸:isOvalFace
有没有好身材:hasFigureWell
用boolean类型

我们有五个类,main Person  , Gender ,IBeautiful, AestcheticalStandard
Person 类里面的属性:姓名, 年龄, 性别。 因为性别有单独的Enum类, 所以我们就可以直接调用
利用构造方法, 在构造对象的时候就进行赋值。
此外, Person 类哈有类方法search(); 雷勇她实现找对象的功能。对于search,
里面传递的参数,可定还有人,还有AestheticalStandard类,美不美
在这里要注意几点:
1.就是构建对象的时候直接赋的值不能为空, 否则会出现空引用的情况, 所以在开始的的时候要进行
判断:
2.判断性别;
3。判断年龄
4, 判断相貌
对于Gender类, 直接赋值后可以再直接赋值。
那个aestheticalstandard ,boolean类型默认其为true.
*/
class Person{
        private String name;
        private Gender sex;
        //枚举类型的特点,?
        private Integer age;
        //人类需要姓名,性别  ,年龄这三个属性,她是相亲的美女具有的
        //构造必须的
        public Person(String name, Gender sex, Integer age){
                super();
                this.name=name;
                this.sex=sex;
                this.age=age;
               
        }
        //创建类的方法
        String search(Person g,AestheticalStandard d)
        {
                //如果对象不存在,或者性别没有,处理
                if(g==null||d=null){
                        return "对不起,条件不满足";
                }
                String ret=g.getName()+",";
                //获取待相亲的名字,并和, 字符串相连。
                //根据获取性别的值,case 不同的动作,方法调用的:对象.方法名()
                switch (g.getSex()){
                case MAN:
                        ret+="对不起,我不喜欢男的";
                        break;
                case NONE:
                        ret+="能不能透漏个性别";
                        break;
                        //如果两者都不是,执行默认(此时肯定是女性),
                        default:
                                if(g.age<27&&g.age>20){
                                        if(d.isOvalFace()&&d.hasFigureWell()){
                                                ret+="我等你等的花都谢了,嫁给我吧";
                                               
                                        }
                                        else{
                                                ret+="对不起,今天没时间";
                                                //脸蛋不好的或者身材不好的,虽然年龄合适但是还没时间。
                                        }
                                }
                                else{
                                        ret+="不好意思,年 龄不合适";
                                }
                                return ret;
                }
                //继续创建类的方法,毕竟还是在类中,person 有很多方法呢
                //那三个name  sex 和age 三个私有对象需要共有方法的访问
                public String getName(){
                        return name;
                }
                public void setName(String name){
                        this.name=name;
                       
                }
                public  String getSex()
                {
                        return sex;
                }
                public void setSex(){
                        this.sex=sex;
                }
                public Integer getAge()
                {
                        return age;
                }
                //int 是基本数据类型,Integer是其包装类,注意是一个类。
                public void setAge(Integer age){
                        this.age=age;
                }               
        }
        //这里是Person类以外了吧
        /*
         下面是枚举类型,enum 枚举名{ 枚举值表 };
在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。
例如:
该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday
类型变量的取值只能是七天中的某一天。
         */
        enum Gender{
                MAN("男"),WOMAN("女"),NONE("保密");
                //定义了一个私有变量,也在枚举类中
                private String value;
                //性别方法也在枚举类中么?走眼,这是枚举类的实例化。构造器
                private Gender(String value){
                        this.value=value;
                }
                //看看枚举类里还有什么
                public String toString(){
                        return value;
                }
        }
        //定义漂亮的接口
        interface Ibeautiful{
                //是否有瓜子脸
                boolean isOvalFace();
               
                //身材是不是很好
                boolean hasFigureWell();
        }
        class AestheticalStandard implements Ibeautiful{
                public boolean isOvalFace(){
                        return true;
                }
                //在这???类中,对瓜子脸和好身材这两个接口进行复写
                public boolean hasFigureWell(){
                        return true;
                }
               
        }
        //在这复写接口方法的神奇类结束后,正式相亲
        class XiangQin{
                public static void main(String[] args){
                        //创建两个对象
                        Person p=new Person("武大郎",Gender.MAN,21);
                        Person g=new Person("sex lady",Gender.WOMAN,25);
                        //枚举类就是这样用的么,其中的变量写成刚才的格式,类名.某量
                        //就把某量后面的()中的字符串提取出来啦
                        String k=p.search(g, new AestheticalStandard());
                        System.out.println(k);
                }
        }
       
       
       
}




















作者: 工善器    时间: 2013-11-2 16:50
错误提示:Exception in thread "main" java.lang.Error: Unresolved compilation problem:

    at it.cast.java.util.XiangQin.main(XiangQin.java:154)


作者: 零下五度的水    时间: 2013-11-2 18:12
at it.cast.java.util.XiangQin.main(XiangQin.java:154)
你的代码不写行数好歹也说一下这个154行是哪行吧
作者: 工善器    时间: 2013-11-2 21:15
public static void main 那句




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2