第二次作业

1.个人学习进度条:

 代码行数(新增/累积)博客字数(新增/累积)学习时间(新增/累积)重要成长
目标 1000行 5000 100小时 掌握程序设计的思想
第十一周 100/100 500/500 10/10 学习了结Java绪论
第十二周 200/200 0/0 20/10 学习了解结构化程序设计
第十三周 300/300 2000/2000 30/20 学习了解面向对象程序设计
第十四周

2.面向对象程序设计知识梳理:

  面向对象技术的三大特性:继承性、多态性和封装性

  (1)类:类是程序设计的基本单位

     类的定义:[修饰词] class 类名

          {

            类体(属性和方法)

          }

  (2)方法:方法即函数,是一种动作,而属性是名词

     方法的定义:[修饰词] 返回值类型 方法名([方法的参数列表])

          {

            方法体

          }

    构造方法:每个类都有的,方法名和类名相同的,不返回任何数据类型且不需要用void声明的一种方法

  (3)对象:类是抽象而对象是具体

     对象的创建:类名 对象名 = new 构造方法名

     实例对象方法的调用:对象名.方法名()

     传值和传引用的区别:传值操作变量,地址不变,赋值;传引用操作对象,赋地址。

  (4)继承性:

     子类继承父类,定义格式:

          [修饰词] class 类名 extends 父类名 [implements 接口名称A,B,C]

          {

            类体(属性和方法)

          }

     注:Java不支持多重继承,允许一个类有多个直接父接口interface

       子类在创建对象时,会先调用父类的默认构造方法在调用子类的构造方法

  (5)多态性:代码可重用,起的名可以一样

     静态多态性:重载---在编译时就能被识别,同一个类中同名但不同参数的方法,先调用父类的再调用子类的

     动态多态性:覆盖---在运行的时候才能够看出来,子类和父类有相同的方法(包括参数列表),调子类的

     super:表示当前对象的父类

         super.成员名---用super访问父类被覆盖的成员

         super.方法名()---用super访问父类被覆盖的方法

         super([参数列表])---用super调用父类的构造方法

  (6)包:同一包内的类可以相互访问,对其他包中的类提供访问控制;方便程序重用

     创建包:package 包名

     导包:

      import 包名.*    //全部类

      import 包名.类名

      import static 包名.静态方法名

     注:包中含有“.”分隔符,表示目录层次;

       成员与方法前必须加上public,否则引入包会出错;

       一个Java文件只能有一个包;

       编译Java文件:javac -d 目录名 源文件.java 

  (7)封装性:

     类成员的访问控制模式及允许访问范围:

     公共模式public:在同一类内,在同一包内,子类,所有类可以访问

     保护模式protected:在同一类内,在同一包内,子类可以访问

     默认模式default:在同一类内,在同一包内可以访问

     私有模式private:在同一类内可以访问

  (8)关键字:

     abstract抽象: 抽象类不能用来创建对象,必须被继承;

            抽象方法不能有方法体;

            抽象方法不一定包含抽象方法但抽象方法必须在抽象类中;

            抽象类的子类必须把父类省略的方法体写出来

     static静态:不属于任何一个具体对象,属于类,开辟的空间是公共的

     final最终:被final修饰不能有子类,常量被赋值,值不可以被更改

第二次作业

  1. 创建接口Flyer,封装在com.cvit包中,包含三个方法

    无返回值 takeOff()
    无返回值 land()
    无返回值 fly()

package com.cvit;       //封装在com.cvit包       
interface Flyer        //创建接口Flyer
{
  public void takeOff(); //无返回值方法 takeOff()   
  public void land();    //无返回值方法 land()  
  public void fly();     //无返回值方法 fly()
}

  2. 创建类Airplane,封装在com.cvit包中,实现Flyer接口

    无返回值方法 takeOff(),打印输出第一行"----------------",第二行"airplane takeOff"
    无返回值方法 land(),打印输出第一行"----------------",第二行"airplane land"
    无返回值方法 fly(),打印输出第一行"----------------",第二行"airplane fly"

package com.cvit;                             //封装com.cvit包
public class Airplane implements Flyer      //创建类Airplane
{
  public void takeOff()                   //无返回值方法 takeOff()
{
  System.out.println("----------------");     //打印输出第一行"----------------"
  System.out.println("airplane takeOff");   //打印输出第二行"airplane takeOff"

}
  public void land()               //无返回值方法 land()
{
  System.out.println("----------------");   //打印输出第一行"----------------"
  System.out.println("airplane land");     //打印输出第二行"airplane land"
}
  public void fly()               //无返回值方法 fly()
{
  System.out.println("----------------");  //打印输出第一行"----------------"
  System.out.println("airplane fly");    //打印输出第二行"airplane fly"
}

  3. 创建类SuperClass,封装在com.cvit包中

    声明整型变量x,
    构造方法实现以下功能,为x赋值为4,打印输出"in superClass : x = [x的值]"
    定义方法aMethod(),打印输出"in superClass.aMethod()"

package com.cvit;                                  //封装com.cvit包
public class SuperClass                    //创建类SuperClass
{
    int x;                          //声明整型变量x
    public void Superclass()               //创建构造方法
  {
    x=4;                                              //为x赋值为4
    System.out.println("in subClass:x="+x);           //打印输出"in superClass : x = [x的值]"
  }
    public void aMethod()                             //定义方法aMethod()
  {
    System.out.println("in superClass.aMethod()");    //打印输出"in superClass.aMethod()
  }

}

  4. 创建类SubClass1,封装在com.cvit包中

    声明整型变量x,
    构造方法实现以下功能,为x赋值为6,打印输出"in subClass : x = [x的值]"
    定义方法aMethod()
    调用父类的构造方法;
    打印输出"in SubClass1.aMethod()";
    打印输出"super.x = [父类中x的值], sub.x=[子类中x的值]";
    定义方法aMethod(int a, int b),返回a+b的值

package com.cvit;                   //封装在com.cvit包       
class SubClass1 extends SuperClass         //创建类SubClass1继承SuperClass
{
    public int x;                    //声明整型变量x
    public SubClass1()               //创建构造方法                
    {
        x=6;                        //x赋值为6
        System.out.println("in subClass:x="+x);//打印输出"in subClass : x = [x的值]"
    }
    public void aMethod()             //定义方法aMethod()             
    {
        super.aMethod();               //调用父类的构造方法
        System.out.println("in SubClass1.aMethod()");     //打印输出"in SubClass1.aMethod()"
        System.out.println("super.x="+super.x+"sub.x="+x);//打印输出"super.x = [父类中x的值], sub.x=[子类中x的值]"
    }
        public int aMethod(int a,int b)     //定义方法aMethod(int a, int b),返回a+b的值   
    {
        int s=a+b;                          //定义a+b
        return s;                               //返回a+b的值
    }
}

   5. 创建类SubClass2,封装在com.cvit包中

     定义方法aMethod(),打印输出"in SubClass2.aMethod()"
     定义方法aMethod(int a, int b),返回a+b的值

package com.cvit;                       //封装在com.cvit包     
class SubClass2                       //创建类SubClass2                                   
{
    public void aMethod()                 //定义方法aMethod()
            
    {    
        System.out.println("in SubClass2.aMethod()");//打印输出"in SubClass2.aMethod()"
    }
    public int aMethod(int a ,int b)          //定义方法aMethod(int a, int b)      
    {
        int s=a+b;                    //定义a+b
        return s;                     //返回a+b的值
    }
}

  6. 创建类SubClass3,封装在com.cvit包中

    定义方法aMethod(),打印输出"in SubClass3.aMethod()"
    定义方法aMethod(int a, int b),返回a+b的值

package com.cvit;                      //封装在com.cvit包     
class SubClass3                       //创建类SubClass3                                   
{
    public void aMethod()                 //定义方法aMethod()
            
    {    
        System.out.println("in SubClass3.aMethod()");//打印输出"in SubClass3.aMethod()"
    }
    public int aMethod(int a ,int b)          //定义方法aMethod(int a, int b)      
    {
        int s=a+b;                     //定义a+b
        return s;                     //返回a+b的值
    }
}

  7. 创建主类Main,封装在com.cvit包中

    定义返回值为空的静态方法chooseClass(SubClass2 sub2)
    定义返回值为空的静态方法chooseClass(SubClass3 sub3)
    程序的入口方法实现
    定义整型变量x,赋值为7;
    创建Airplane类的对象airplane;
    调用Airplane类的takeOff方法;
    创建SubClass1类的对象sub1;
    调用SubClass1类的aMethod方法;
    调用SubClass1类的aMethod方法,传值(x, x),将得到的结果赋值给x;
    调用Airplane类的fly方法;
    创建SubClass2类的对象sub2;
    创建SubClass3类的对象sub3;
    调用chooseClass方法,将sub2作为参数传入;
    调用SubClass2类的aMethod方法,传值(x, x),将得到的结果赋值给x;
    调用chooseClass方法,将sub3作为参数传入;
    调用SubClass3类的aMethod方法,传值(x, x),将得到的结果赋值给x;
    调用Airplane类的fly方法;

package com.cvit;                           //封装在com.cvit包     
public class Main                          //创建主类main                     
{
    public static void chooseClass(SubClass2 sub2)     //定义返回值为空的静态方法chooseClass(SubClass2 sub2)      
    {
    }
    public static void chooseClass(SubClass3 sub3)     //定义返回值为空的静态方法chooseClass(SubClass3 sub3)
    {
    }
    public static void main (String args[])        //程序的入口            
    {
        int x=7;                          //定义整型变量x,赋值为7
        Airplane airplane=new Airplane();           //创建Airplane类的对象airplane;            
        airplane.takeOff();                   //调用Airplane类的takeOff方法;             
        SubClass1 sub1=new SubClass1();            //创建SubClass1类的对象sub1;
        sub1.aMethod();                      //调用SubClass1类的aMethod方法;
        int a =sub1.aMethod(x,x);                //传值(x, x),将得到的结果赋值给a;                  
        System.out.println(a);                  //用a承接返回值
        airplane.fly();                      //调用Airplane类的fly方法;
        SubClass2 sub2=new SubClass2();            //创建SubClass2类的对象sub2;
        SubClass3 sub3=new SubClass3();            //创建SubClass3类的对象sub3;
        chooseClass(sub2);                    //调用chooseClass方法;                     
        int b =sub2.aMethod(x,x);                //将sub2作为参数传入;
        System.out.println(b);                  //用b承接返回值;
        chooseClass(sub3);                    //调用chooseClass方法,将sub3作为参数传入;
        int c =sub3.aMethod(x,x);                //将sub3作为参数传入c;
        System.out.println(c);                  //用c承接返回值;
        airplane.fly();                      //调用Airplane类的fly方法;
    }
}

3.运行结果:

posted @ 2017-11-17 21:58  牛皮糖啊  阅读(178)  评论(2编辑  收藏  举报