java面向对象下(练习)

接口

选择题:

1)下面关于接口的说法中不正确的是(C)。

A.接口中所有的方法都是抽象的

B.接口中所有的方法都是public访问权限

C.子接口继承父接口所用的关键字是implements

D.接口是Java中的特殊类,包含常量和抽象方法

2)Java语言接口间的继承关系是(A)。

A.单继承     B.多重继承          C.不能继承          D.不一定

3)一个类实现接口的情况是(A)。

A.一次可以实现多个接口            B.一次只能实现一个接口

C.不能实现接口                    D.不一定

写出程序结果

interface A{} 

class B implements A{

public String func(){

return "func";

}

}

class Demo{

public static void main(String[] args){

A a=new B();

System.out.println(a.func());

}

}

编译失败:因为A接口中并未定义func方法。

内部类

Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)

答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现

有一个Car类,有属性temperature(温度),车内有Air(空调),有吹风的功能flow,Air会监视车内的温度,如果温度超过40度则吹冷气。如果温度低于0度则吹暖气,如果在这之间则关掉空调。实例化具有不同温度的Car对象,调用空调的flow方法,测试空调吹的风是否正确

答:

class Car{

     double temperaturetemperature;

    public Car(double temperaturetemperature) {

        this.temperaturetemperature = temperaturetemperature;

    }

    class Air{

        void flow(double a){

            if(a > 40){

                System.out.println("吹冷风");

            }else if(a < 0){

                System.out.println("吹暖风");

            }else {

                System.out.println("关闭状态");

            }

        }

    }

}

public static void main(String[] args) {

        Car car = new Car(41);

        Car.Air air = car.new Air();

        air.flow(car.temperaturetemperature);

    }

抽象类与抽象方法

abstract 的method 是否可同时是static,是否可同时是native,是否可同时是synchronized?

答:都不能

抽象类和抽象方法之间的关系

定义抽象类和抽象方法的关键字是(abstract)。抽象类中(可以)(可以/不可以)有抽象方法,(不可以)(可以/不可以)有普通方法(可以)(可以/不可以)有属性;一个类中定义了抽象方法,那这个类(必须)(必须/不必须)用abstract修饰,即抽象类。

判断题

abstract class Name {

   private String name;

   public abstract boolean isStupidName(String name) {}

}

这有何错误?

答案: 错。abstract method必须以分号结尾,且不带花括号。

是否可以通过编译?

abstract class Something {

   private abstract String doSomething ();

}

答案: 错。abstract的methods不能以private修饰。abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstract method封锁起来呢? (同理,abstract method前不能加final)。

简单工厂模式

叙述工厂模式的设计理念

有一个交通工具接口类Vehicles,有work接口,有Horse类和Boat类分别实现Vehicles,创建交通工具工厂类,有两个方法分别获得交通工具Horse和Boat;有Person类,有name和Vehicles属性,在构造器中赋值,实例化“唐僧”,一般情况下用Horse作为交通工具,遇到大河时用Boat作为交通工具。

答:

interface Vehicles{

    void a();

}

class Horse implements Vehicles{

    @Override

    public void a() {

        System.out.println("我是马");

    }

}

class Boat implements Vehicles{

    @Override

    public void a() {

        System.out.println("我是船");

    }

}

class Person{

    String name;

    Vehicles vehicles;

    public Person(String name, Vehicles vehicles) {

        this.name = name;

        this.vehicles = vehicles;

    }

}

public static Vehicles getJT(String name){

    Vehicles an = null;

    if("河".equals(name)){

        an = new Boat();

    }else {

        an = new Horse();

    }

    return an;

}

public static void main(String[] args) {

        Person p = new Person("唐增",getJT("河"));

        p.vehicles.a();

    }

static的使用

是否可以从一个static方法内部发出对非static方法的调用?

答:不可以,如果其中包含对象的method();不能保证对象初始化.

public class Demo {

    private static int j = 0;

    private static boolean methodB(int k) {

       j += k;

       return true;

    }

    public static void methodA(int i) {

       boolean b;

       b = i < 10 | methodB(4);

       b = i < 10 || methodB(8);

    }

    public static void main(String args[]) {

       methodA(0);

       System.out.println(j);

    }

}

每日一练

  1. 写出一维数组初始化的两种方式

int[] arr = new int[]

int[] arr = {}

  1. 写出二维数组初始化的两种方式

int[][] arr = {{1,2},{2,3}};

int[][] arr = new arr[3]{};

  1. 如何遍历如下的二维数组

int[][] arr = new int[][]{{1,2,3},{4,5},{6,7,7}};

for(int i = 0;i < arr2.length;i++){

            for (int j = 0;j < arr2[i].length;j++){

                System.out.println(arr2[i][j]);

            }

        }

  1. 不同类型的一维数组元素的默认初始化值各是多少

byte 0

short 0

int 0

long 0L

float 0.0F

double 0.0

char 0 或写为:’\u0000’(表现为空)

 boolean false

 引用类型 null

  1. 一维数组的内存解析:

String[] strs = new String[5];

strs[2] = “Tom”;

strs = new String[3];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值