08

A:简答题

1、继承的好处是什么?

提高代码的复用性和维护性

2、Java中的类的继承特点是什么以及继承的注意事项?

特点:JAVA中只支持单继承,不支持多继承,但支持多层继承;注意事项:子类只能继承父类非私有成员,构造方法不参与继承,静态方法可以参与继承,不要为了部分功能去继承。

3、this和super分别是什么,他们各自的应用场景是什么?

this代表是本类的一个引用,谁调用这个方法,this就代表谁,super可以调用父类的数据;this.变量名 方法名 ;this()调用本类的空参构造;super.变量名 super.方法名 super()调用空参构造。

4、什么是方法重写?需要注意哪些问题?

在创建子类对象时,如果对父类中的某些功能不满意时,可以在子类中对父类的方法进行重写,就是在子类中出现和父类一样的方法时,子类方法就会覆盖父类方法,运行的是子类重写的方法。注意事项:父类私有的方法子类不能重写;子类在重写父类方法时,权限修饰符不能比父类的低public>protected>缺省>private;静态方法不参与重写

5、方法重写和重载有什么区别?

方法重写是在继承的前提下才有,而方法重载时在一个类中有重名方法时,根据参数的个数和类型不同来区分同名方法的。

6、子父类中构造方法的执行有什么特点?为什么要这样?

如果子类继承父类,那么父类中的构造方法会优先于子类的构造方法执行,因为我们在创建子类的对象时,应该先完成父类数据的初始化,再初始化子类的数据。

7、静态代码块,构造代码块,构造方法的执行顺序是什么以及执行特点?

静态代码块最先执行,接下来时构造代码块,最后时构造方法;执行特点:无论new多少次对象,静态代码只执行一次,而构造代码块和构造方法每次都会执行。

8、final关键字是什么意思,可以修饰那些成员?被修饰的成员有哪些特点?

最终的,可以修饰局部变量,成员变量,也可以修饰方法和类,被修饰的变量为常量(基本数据类型),值不能被改变;如果修饰的引用数据类型,指的是地址值不能被改变;被修饰的方法不能重写,但可以继承;常量名一般大写;被修饰的类不能被继承。

B:看程序写结果(写出自己的分析理由),程序填空,改错,看程序写结果。

1、请写出程序的运行结果

class Fu {

public int num = 10;

public Fu() {

System.out.println(“fu”);

}

}

class Zi extends Fu{

public int num = 20;

public Zi() {

System.out.println(“zi”);

}

public void show() {

int num = 30;

System.out.println(num);

System.out.println(this.num);

System.out.println(super.num);

}

}

class Test {

public static void main(String[] args) {

Zi z = new Zi();

z.show();

}

}

结果:

30

20

10

2、请写出程序的运行结果

public class Demo {

public void method(int age){

System.out.println(“int age”);

}

public void method(String name){

System.out.println(“String name”);

}

public void method(String name, int age){

System.out.println(name +"—"+ age);

}

public static void main(String[] args){

Demo d = new Demo();

d.method(“小明”);

d.method(18);

}

}

结果:

int age

String name

3、给出以下代码,请问该程序的运行结果是什么?

class Demo {

String s = “Outer”;

public static void main (String[] args) {

S2 s2 = new S2();

s2.display();

}

}

class S1 {

String s = “S1”;

public void display(){

System.out.println(s);

}

}

class S2 extends S1 {

String s = “S2”;

}

结果:

S1

4、给出以下代码,请问该程序的运行结果是什么?

class S1 {

public static void main(String[] args) {

new S2();

}

public S1(){

System.out.println(“S1”);

}

}

class S2 extends S1 {

public S2 () {

System.out.println(“S2”);

}

}

结果:

S1

S2

5、给出以下代码,请问该程序的运行结果是什么?如有问题,请指正。

class A {

int x = 0;

A(int w){

x = w;

}

}

class B extends A {

int x = 0;

B(int w){

x = w+1;

}

}

class Demo {

public static void main(String[] args){

B b = new B(100);

}

}

在子类B中的有参构造首行应该有super(w:),输出结果为101

6、给出以下代码,请问该程序的运行结果是什么?如有问题,请指正。

class Demo {

int max;

void Demo(){

max = 100;

System.out.println(max);

}

Demo(int i){

max = i;

System.out.println(max);

}

public static void main (String[] args) {

new Demo();

new Demo(123);

}

}

因为Demo类中没有提供空参构造,所以不能直接new对象

C:编程题

1、编写java程序,分析如下需求,写出你分析的类有哪些,以及功能。最后写一个测试类,针对每个类的功能进行测试。

​ 动物园里有很多种动物:

​ 比如说,狗,猫等。

​ 狗有姓名和年龄,猫也有姓名和年龄。

​ 狗有跑步的方法,猫也有跑步的方法。而且都仅仅是跑步。

​ 狗有吃饭的方法,猫也有吃饭的方法。只不过,狗吃骨头,猫吃鱼。

​ 请用所学知识,对这个问题进行解决。

​ 父类

​ 成员变量

​ 成员方法

​ 子类

​ 重写方法

​ 特有方法

​ 测试类

​ 普通调用

public class CeShi {//测试类
    public static void main (String[] args) {
        Cat cat = new Cat();
        cat.age=2;
        cat.name="小花";
        System.out.println(cat.age);
        System.out.println(cat.name);
        cat.eat();
        Cat.run();
        Dog dog = new Dog();
        dog.age=3;
        dog.name="小胖";
        System.out.println(dog.name);
        System.out.println(dog.age);
        dog.eat();
        Dog.run();
    }
}
public class Animal {//动物类
    public String name;
    public int age;
    public final static void run(){
        System.out.println("跑步");
    }
    public void eat(){
        System.out.println("吃饭");
    }
}
public class Dog extends Animal {//狗类
  public void eat(){
      System.out.println("狗吃骨头");
  }
}
public class Cat extends Animal {//猫类
    public void eat(){
        System.out.println("猫吃鱼");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值