10/21/22作业

来源:互联网 发布:雨露计划app软件 编辑:程序博客网 时间:2024/05/29 04:48

10/21.22作业

1:教练和运动员案例(学生分析然后讲解)

乒乓球运动员和篮球运动员。

乒乓球教练和篮球教练。

为了出国交流,跟乒乓球相关的人员都需要学习英语。

请用所学知识:

分析,这个案例中有哪些抽象类,哪些接口,哪些具体类

抽象类 person  教练和运动员都继承自person

乒乓球运动员和篮球运动员都继承自运动员

乒乓球教练和篮球教练继承自教练

定义一个学英语的接口      写一个接口的子实现类

class 子实现类implement 接口 来实现学英语的方法.

通过继承来实现:eg

public class learnEnglish extends Athlete  implements English{

}

 

2.final关键字可以干什么?有什么特点?

final关键字可以修饰 类 方法和变量

对于变量:final修饰基本数据类型,基本类型的变量值不能改变.

引用数据类型:如果final修饰引用类型的变量,不能再在堆内存开辟新的空间,可以改吧成员变量的值.

对于方法:被final修饰的方法不能被覆盖

对于类:被final修饰的类不能被继承,final修饰的类是最终类

 

3. final关键字的面试题?

         A:修饰局部变量

         B:初始化时机

A: :final修饰基本数据类型,基本类型的变量值不能改变.

引用数据类型:如果final修饰引用类型的变量,不能再在堆内存开辟新的空间,可以改吧成员变量的值.

B:被final修饰的变量只能赋值一次,在构造方法前修饰

 

4.多态是什么,前提是什么?

一种事物在不同情况下的多种表示:eg 水冰 雾

1.     前提条件:1.必须要有继承关系

2.     子类必须重写父类方法

3.     有父类引用指向子类对象:向上转型

 

5.多态中成员访问的特点?

成员变量:编译左,运行左

         成员方法:编译左,运行右(子类重写了父类方法)

         静态方法:编译左,运行左.

 

6. 多态的好处及弊端?如何解决多态的弊端?

好处:提高了代码的维护性和扩展性

弊端:父类对象不能访问子类的特有功能.

解决方法:1.创建子类对象,通过子类对象调用子类的特有功能.(不支持)

需要在堆内存开辟新的空间.

2.向下转型:父类引用子类对象 因此子类也可以引用父类对象

向下转型:将父类的引用强制转换为子类的引用:

向下转型必须依附于向上转型.

 

7. 什么是向上转型?什么是向下转型?

向上转型:父类引用指向子类对象.

向下转型:将父类的引用强制转换为子类的引用

 

8:抽象类概述及其特点?

不同人的习惯不同,不能将人定义为一个具体类:而是声明一个(abstract)

当过一个类中有抽象方法的时候,这个类一定要定义为抽象类

特点:一个类中可以有抽象方法.也可以有非抽象方法 .

抽象类不能实例化:不能创建对象.

抽象类多态:强制子类必须重写当前抽象的父类的所有抽象方法

 

9:抽象类成员特点?

成员变量:可以是变量也可以是常量

构造方法:抽象类可以有后构造方法:包括无参构造和有参构造

成员方法:可以是抽象方法也可以是非抽象方法.

 

10:抽象类的小问题

         A:一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?

可以定义为抽样类,抽样类中可以有抽样方法也可以有非抽样方法.

         B:abstract不能和哪些关键字共存

final    private  static

 

11:接口的概述及其特点?

接口体现的是一种扩展功能: eg(部分人可以干的事情)
接口的表示方法:interface:接口 interface 接口名{

}

接口理念的方法只能是抽象方法.且不能有构造方法.不能实例化

通过子实现类进行实例化.

 

12:接口的成员特点?

成员变量:只能是常量:存下默认修饰符:public static final(建议自己给出默认修饰符)

没有构造方法

成员方法:默认修饰符为public abstract

 

13:抽象类和接口的区别?

成员变量:抽象类:成员变量可以是常量,也可以是变量.

接口:成员变量只能是一常量,默认修饰符 public static final

构造方法:

抽象类:可以有有参和无参构造

接口:没有构造方法

成员方法:

抽象类:可以有抽象方法也可以有非抽象方法

接口:只能是抽象方法 默认修饰符:public abstract

 

 

10/22日作业

1.     形式参数和返回值问题

形式参数是基本类型:要什么数据类型呢 在传递是就传什么数据类型.

形式参数是引用类型

1.     具体类型:创建该类对象

返回值:直接返回该类对象

2.     抽象类:形参是抽象类,需要定义一个抽象类的子类来实例化.

返回值:返回该抽象类的子类对象

3.     接口:形式参数是接口,定义一个子实现类,通过接口多态进行参数传递.

返回值:需要返回该接口的子实现类对象

 

2.     内部类的概述及访问特点

在一个类中定义另一个类,把这种情况叫做内部类:

内部类可以直接访问外部类的成员

外部类想要访问内部类的成员,需要创建内部类的对象访问该内部类的成员.

 

3.     内部类的分类

内部类分为:成员内部类:在外部类的成员位置

局部内部类:在外部的局部变量位置定义这个类

 

4.     匿名内部类的格式和应用及面试题

是内部类的简化格式

格式: new 接口名或者类名(){

   方法重写

}

Eg: Eg: interface Inter{

    //抽象功能

    public abstract void show() ;

}

class Outer{

    //成员方法

    public void method(){    //一个方法的时候

       new Inter(){

@Override

           public void show() {

              System.out.println("show");

           }

      

       }.show() ;


面试题

    interfaceInter { void show(); }

           class Outer { //补齐代码 }

           class OuterDemo {

              public static voidmain(String[] args) {

                    Outer.method().show();

                }

           }

           要求在控制台输出”HelloWorld”

public interface Text2{

   voidshow();

       }

       classOuter5 {

           publicstatic  Text2  method(){

              returnnew Text2(){

                    @Override

                  publicvoid show() {

                  System.out.println("HelloWorld");

                     }

              };

              }

       }

       public  class  OuterDemo{

           publicstatic void main(String[] args) {

                Outer5.method().show();

             }

       }

 

 

 

C语言题

1.输入一行字符,分别统计出其中字母,空格,数字和其他字符的个数.

#include<stdio.h>

voidmain()

{    char c;

         int letters=0,space=0,dight=0,other=0;

   printf("请输入一行字符:");

while((c=getchar())!='\n'){

         if(c>='a'&&c<='z'||c>='A'&&c<='Z'){

                  letters++;

         }else if(c==' '){

         space++;

         }else if(c>='0'&&c<='9'){

         dight++;

         }else if{

         other++;

         }

}

printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符:%d\n",letters,space,dight,other);

return 0;

}

 

 

 

2.求下列式子的值:1-1/2+1/3-1/4+…+1/99-1/100

#include<stdoi.h>

int main()

{

         int i;

         float sum=1.0,

         float a,

         float  j=1;

         for(i=1;i<=100;i++)

         {

                  a=j/i;

                  sum+=a;

                  j=-j;

         }

         printf("1-1/2+1/3-1/4+.....+1/99-1/100=%f\n",sum);

}

 

4.     矩阵转置:将一个m行n列矩阵(即m*n矩阵)的每一行转置为另一个n*m的矩阵相应列

    例如2*3矩阵转置后

1       2   3                              1    4

4       5     6                             2    5

                                                3    6





原创粉丝点击