实验七

 

1实验代码:

package Students;

public class Person

    {   

     public String name;

        public String birthday;

        public String province,city;

        public int count;

        public Person(String nam,String birthda,String provinc,String cit,int n)

        {

         name=nam;birthday=birthda;province=provinc;city=cit;count=n;

         

        }

    }

        

   class Student extends Person

        {public String major;

        public int sum1,sum2,sum3;

        public int grade;

        public int number;

        public int score;

        

        Student(String nam,String birthda,String provinc,String cit,int n,String majo,int grad,int scor)

        { super(nam,birthda,provinc,cit,n);

            major=majo;

            grade=grad;

            score=scor;

            String a,b,c;

         a=new String("网络工程");

         b=new String("物联网");

         c=new String("计算机科学与技术");

         

            

         if(major.equals(a))

         {number=grade*10000+01*100+count;

             }

         if(major.equals(b))

         {number=grade*10000+02*100+count;

             }

         if(major.equals(c))

         {number=grade*10000+03*100+count;

             }

         

            }

        public void searchname(String nam)

        { int i=-1;

            i=name.indexOf(nam);

           

         if(i!=-1)

          System.out.println(name);

        };

        public void searchbirthday(String num) 

        {

         int i=-1;

         i=birthday.indexOf(num);

         if(i!=-1)

          System.out.println(name);

        }

        public void searchplace(String place)

        { 

         int i=-1;

         i=province.indexOf(place);

         if(i!=-1)

          System.out.println(name);

         

        }

        

        public int separate()

        {

         String a,b,c;

         

         a=new String("网络工程");

         b=new String("物联网");

         c=new String("计算机科学与技术");

         if(major.equals(a))

         {

          sum1=sum1+score;

          return sum1;

             }

         if(major.equals(b))

         {sum2=sum2+score;

         return sum2;

             }

         if(major.equals(c))

         {

          sum3=sum3+score;

          return sum3;

         }

         else return 0;

        }

        

    public static void main(String[] args)

    {

        System.out.println("初始数据:学生1:姓名:张三,生日:1998年11月15日,省份:青海,城市:西宁,专业:物联网,入学年份:2017,成绩:89");

        System.out.println(" 学生2:姓名:李四,生日:1999年01月08日,省份:河南,城市:洛阳,专业:网络工程,入学年份:2017,成绩:97");

        System.out.println(" 学生3:姓名:王二,生日:1998年07月24日,省份:山东,城市:青岛,专业:网络工程,入学年份:2017,成绩:92");

        System.out.println(" 学生4:姓名:赵六,生日:1997年08月30日,省份:陕西,城市:西安,专业:计算机科学与技术,入学年份:2017,成绩:84");

        System.out.print("查找姓‘王’的学生为:");

        Student stud1=new Student("张三","1998年11月15日","青海","西宁",01,"物联网",2017,89);

     Student stud2=new Student("李四","1999年01月08日","河南","洛阳",02,"网络工程",2017,97);

     Student stud3=new Student("王二","1998年07月24日","山东","青岛",03,"网络工程",2017,92);

     Student stud4=new Student("赵六","1997年08月30日","陕西","西安",04,"计算机科学与技术",2017,84);

     stud1.searchname("王");

     stud2.searchname("王");

     stud3.searchname("王");

     stud4.searchname("王");

     System.out.print("查找生日为1999年01月08日的学生为:");

     stud1.searchbirthday("1999年01月08日");

     stud2.searchbirthday("1999年01月08日");

     stud3.searchbirthday("1999年01月08日");

     stud4.searchbirthday("1999年01月08日");

     System.out.print("查找所在地区是陕西的学生为:");

     stud1.searchplace("陕西");

     stud2.searchplace("陕西");

     stud3.searchplace("陕西");

     stud4.searchplace("陕西");

     stud1.separate();

     stud2.separate();

     stud3.separate();

     stud4.separate();

     int add1=0,add2=0,add3=0;

     add1=stud1.sum1+stud2.sum1+stud3.sum1+stud4.sum1;

     add2=stud1.sum2+stud2.sum2+stud3.sum2+stud4.sum2;

     add3=stud1.sum3+stud2.sum3+stud3.sum3+stud4.sum3;

     System.out.println("网络工程班总成绩是:"+add1);

     System.out.println("物联网班总成绩是:"+add2);

     System.out.println("计算机科学与技术班总成绩是:"+add3);

    }

    }

2.总结

             同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。

简单的说:就是用基类的引用指向子类的对象我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了代码重用。

而多态除了代码的复用性外,还可以解决项目中紧偶合的问题,提高程序的可扩展性.。如果项目耦合度很高的情况下,维护代码时修改一个地方会牵连到很多地方,会无休止的增加开发成本,降低耦合度可以保证。

多态条件:多态可以分为动多态和静多态动多态条件:1)继承(父类——子类,基类——派生类)2)方法重写(父子关系,作用域不同、方法名相同、参数列表相同)3)父类引用引用派生类对象(向上造型)静多态条件:1)方法重载(作用域相同、方法名相同、参数列表不同)程序的拓展性。。

 

 
 
 
 
 

posted on 2019-05-10 21:52  影行人明  阅读(145)  评论(1编辑  收藏  举报