第三章 高级语法:根据已有的类可以申明新的子类,子类复用了父类的申明,避免了代码的重复,任何Java类都是Object类的直接子类或者间接子类。本章介绍类的继承规则和多态机制,重点说明编译时类型和运行时类型。多态机制为程序框架设计提供了支撑,充分体现了面向对象程序设计的软件复用性和扩展性特征。3.1实例成员与类成员:没有用static关键字修饰的成员变量和成员方法也称为实例变量和实例方法,对它们的访问依赖于具体的个体。成员变量和成员方法也可以使用static关键字修饰,分别称为静态变量和静态方法,或者类变量和类方法,对它们的访问不依赖于任何对象。
3.2Java继承:根据已有的类可以申明新的子类,一个父类可以派生出多个子类,但是一个子类只能有一个父类。子类继承父类的成员申明,在子类中可以重新实现所继承得到的成员方法。子类和父类一样都是引用数据类型,都有构造方法,在子类的构造方法中可以使用super语句调用父类中的构造方法。
3.3多态:一个子类类型的对象同时也是一个父类类型的对象,因此可以赋值给一个父类类型的变量。申明变量的类型是语法类型,即编译时类型,但其实际的值可能是null,也可能是子类类型的对象。编译时不进行运算,只根据语法类型进行检查,实际运行时则根据具体的运算值进行执行。本节重点说明多态机制以及应用举例。
[单选题]根据语句Person p=new Student();可以判断出( )。

public class Test{

public static void main(String[] args){

Point p1 = new Point(10, 20);

Point p2 = p1.move(-5, 3);

System.out.println(p1.getInfo());

System.out.println(p2.getInfo());

}

}

选项:[Student类是Person类的直接子类或者间接子类
, 都正确
, Student类的父类是Object类
, Person类的父类是Object类
]
[单选题]根据申明public abstract class Document{......}下面说法中错误的是( )。

选项:[Document类一定有抽象方法
, 语句Document doc = null;在语法上一定是正确的
, Document类一定有toString方法
, Document类可以作为方法的返回类型
]
[单选题]根据语句String name=((NamedBean)bean).name;可以断定NamedBean类中一定申明了name属性。( )

选项:[错, 对]
[多选题]能够改正下面程序中语法错误的选项是( )。

public class Test{

String hello = “Hello, ”;

public static void main(String[] args){

String john = “John”;

         String info = hello + john;

         System.out.println(info);

}

}

选项:[修改public static void main为:
public void main
, 修改String info = hello + john;为:
String info = new Test().hello + john;
, 修改String info = hello + john;为:
String info = john;
, 修改String hello = “Hello, ”;为:
static String hello = “Hello”;
]
[多选题]根据以下程序选择正确的说法( )。

abstract class Animal{

public String sound();

}

class Dog extends Animal{

public String sound(){return “汪汪”;}

}

class Cat extends Animal{

public String sound(){return “喵喵”;}

}

public class Test{

public static void main(String[] args){

Animal[] zoo = {new Dog(), new Dog(), new Cat()};

for(int i=0; i<zoo.length; i++) System.out.println(zoo[i].sound());

}

}

选项:[程序运行输出如下结果:
汪汪
汪汪
喵喵
, 语法上Cat c = (Cat)zoo[0];是一条正确的语句
, 语法上Cat c = (Cat)new Animal();是一条正确的语句
, 语法上Cat c = (Cat)new Dog();是一条正确的语句
]
[多选题]根据以下程序选择正确的说法( )。

abstract class Animal{

public String sound();

}

class Dog extends Animal{

public String sound(){return “汪汪”;}

}

class Cat extends Animal{

public String sound(){return “喵喵”;}

}

public class Test{

public static void main(String[] args){

Animal[] zoo = {new Dog(), new Dog(), new Cat()};

for(int i=0; i<zoo.length; i++) System.out.println(zoo[i].sound());

}

}

选项:[语法上Cat c = (Cat)zoo[0];是一条正确的语句
, 程序运行输出如下结果:
汪汪
汪汪
喵喵
, 语法上Cat c = (Cat)new Dog();是一条正确的语句
, 语法上Cat c = (Cat)new Animal();是一条正确的语句
]
[多选题]能够改正下面程序中语法错误的选项是( )。

public class Test{

String hello = “Hello, ”;

public static void main(String[] args){

String john = “John”;

         String info = hello + john;

         System.out.println(info);

}

}

选项:[修改String info = hello + john;为:
String info = new Test().hello + john;
, 修改String hello = “Hello, ”;为:
static String hello = “Hello”;
, 修改String info = hello + john;为:
String info = john;
, 修改public static void main为:
public void main
]
[单选题]根据申明public abstract class Document{......}下面说法中错误的是( )。

选项:[Document类一定有toString方法
, Document类可以作为方法的返回类型
, 语句Document doc = null;在语法上一定是正确的
, Document类一定有抽象方法
]
[单选题]根据语句Person p=new Student();可以判断出( )。

public class Test{

public static void main(String[] args){

Point p1 = new Point(10, 20);

Point p2 = p1.move(-5, 3);

System.out.println(p1.getInfo());

System.out.println(p2.getInfo());

}

}

选项:[都正确
, Student类是Person类的直接子类或者间接子类
, Student类的父类是Object类
, Person类的父类是Object类
]
[单选题]根据语句String name=((NamedBean)bean).name;可以断定NamedBean类中一定申明了name属性。( )

选项:[对, 错]

温馨提示支付 ¥3.00 元后可查看付费内容,请先翻页预览!
点赞(0) dxwkbang
返回
顶部