当前位置:首页 >> 理学 >>

第9章 抽象类和接口


9.7 习题
一、选择题 1、BD *A Clonable 是接口,不是类 2、A *整型-->int 最终-->final 静态-->static 属性 i-->i 3、BD *抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没 有抽象方法,它也不能再实例化,即不能直接构造一个该类的对象。 *不能有 private,只能通过 get 和 set 获取值。 // 一般类是不可以为 static 型的, 只有类的字段或方法或者是它的内部类才能定义为 static; 为 F 是否是答案,可以商讨 4、BE *使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内 容还是可以改变的 *final 不能派生子类 // B 语法错,void 与 final 的顺序错 // E final 与 abstract 不能连用的 5、AD *静态方法和最终方法不能被覆盖 6、AD // A 也可以算吧,因为:如下是可以的(只是 static 不能与 abstract 一起出现) : interface interfaceClass { static void methoda(){}; } 7、ACD *B abstract 只能修饰抽象方法 8、D *B 抽象类可以有构造方法,接口不能有 *C 抽象类由构造方法、抽象方法、一般方法、常量、变量构成 9、DE 10、D 11、ABC
1

C Double 不是对象,是类

// 举例 public class Test{ public static void main(String args[]){ Class<?> c1 = null; Class<?> c2 = null; Class<?> c3 = null; //三种反射用实例化方式 try{ //最常用的一种形式 c1 = Class.forName("Test"); }catch(ClassNotFoundException e){ e.printStackTrace(); } //通过 Object 类中的方法实例化 c2 = new Test().getClass(); //通过类.class 实例化 c3 = Test.class; System.out.println("类名:" + c1.getName()); //得到类名 System.out.println("类名:" + c2.getName()); //得到类名 System.out.println("类名:" + c3.getName()); //得到类名 } } 12、A *B 可以实现多个接口 类不是一个概念 13、A *抽象方法指一些只有方法声明,而没有具体方法体的方法。抽象方法一般存在于抽象类或 接口中。 *从定义上似乎选 C,但实际上有方法体的方法也能定义为抽象方法的。 14、B 15、A 16、D * A 因为抽象类必须要在子类实现,但加了 final 是不能被继承的,所以就不能被实现 B 的错和 A 类似,只是 B 是方法,抽象方法私有了,子类不能实现,肯定错 C 不能同时用两个访问修饰符,还有 number 的数据类型没有给出 17、D *A、B 接口的访问权限只能设置为 public C 接口没有构造方法,接口中所有的方法必须
2

C 接口间可以有继承关系,通常叫“实现” D 明显接口和抽象

是抽象方法。 18、D *接口的修饰符只有 public 19、D 二、简答题 1、 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类 都是用来描绘对象的, 如果一个类中没有包含足够的信息来描绘一个具体的对象, 这样的类 就是抽象类。 2、 接口(interface) ,在 Java 编程语言中是一个抽象类型,是抽象方法的集合,接口通常 以 interface 来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 由于 Java 只支持单一继承,接口是 Java 实现多重继承功能的一种手段、一种结构。接 口只定义了与外界交流时输入、输出的格式。换句话说,通过在接口中定义一些方法(抽象 方法) ,可以用接口大致规划出类的共同行为,而把具体的实现留给具体的类。 接口与类相似点:1)一个接口可以有多个方法。2)接口文件保存在.java 结尾的文件 中,文件名使用接口名。3)接口的字节码文件保存在.class 结尾的文件中。4)接口相应的 字节码文件必须在与包名称相匹配的目录结构中。 接口与类的区别:1)接口不能用于实例化对象。2)接口没有构造方法,接口中所有的 方法必须是抽象方法。3)接口不能包含成员变量,除了 static 和 final 变量。4)接口不是被 类继承了,而是要被类实现。5)接口支持多重继承。 3、 1)一个子类只能继承一个抽象类,但能实现多个接口; 2)一个抽象类可以有构造方法,接口没有构造方法; 3) 一个抽象类中的方法不一定是抽象方法, 即其中的方法可以有实现 (有方法体) , 接口中的方法都是抽象方法,不能有方法体,只有声明; 4)一个抽象类可以是 public、private、protected、default,接口只有 public; 5)一个抽象类中的方法可以是 public、private、protected、default,接口中的方法 只能是 public 和 default。 4、 1) 嵌套类的对象, 并不需要其外围类的对象。 即它可以不依赖于外部类实例被实例化。 2)不能从嵌套类的对象中访问非静态的外围类对象。 这是由 Java 语法中"静态方法不 能直接访问非静态成员"所限定。 3) 外部类访问内部类的的成员有些特别, 不能直接访问, 但可以通过内部类实例来访问, 这是因为静态嵌套内的所有成员和方法默认为静态的了.同时注意, 内部静态类 Person 只在类 StaticTest 范围内可见, 若在其它类中引用或初始化, 均是错误的. 4)静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 5)静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态 变量,非静态内部类的非静态成员可以访问外部类的非静态变量。
3

静态内部类(1) :静态内部类等同于外部类的静态属性,可以使用类名.的方式进行访 问,可以直接访问外部类公共的私有的静态方法和静态属性; (2) :对于静态内部类的成员属性,需要创建内部类的对象才能访问; (3) : 静态内部类可以设置访问修饰符,与静态变量相同,注意,如果使用 private 修 改静态内部类此内类只有外部类可以访问,其他的类无法访问。 (4) : 静态内部类不会持有外部的类的引用, 所以不能直接访问外部累的成员方法和成 员属性, 需要访时需要先创建外部类的引用, 通过外部类的引用访问外部类的成员方法 和成员属性。 非静态内部类可以理解为就是成员内部类,成员内部类具有: (1)创建成员内部类的对象,要先创建外部类的引用。通过外部类的引用才能创建内 部类的引用,就像成员必须使用引用.的方式才能访问 (2)成员内部类中只能声明成员方法和成员属性,另外可以声明常量 (3)在成员内部类中,可以访问所有的外部类的属性和方法 (4)私有化成员内部类,外部类可以访问,其他外部类则不可见 5、
abstract class MineBase { abstract void amethod(); abstract int i; } public class Mine extends MineBase { amethod() public static void main (String[] args) { int[] ar=new int[5]; for(i=0;i<ar.length;i++) System.out.ptintln(ar[i]); // println } } 编译错误,类 Mine 必须要被声明为抽象的类。 // T Mine 不是抽象的, 并且未覆盖 MineBase 中的抽象方法 //此处不允许使用修饰符 abstract

6、
编译错误,因为 x 这个属性是继承父类,而子类本身没这个方法。

7、输出结果: Circle Rectangle Triangle 三、编程题 1、 抽象类:
4

public abstract class Vehicle { public abstract void sellTicket(); } public class AirPlane extends Vehicle{ public void sellTicket() { System.out.println("卖飞机票"); } } public class Coach extends Vehicle{ public void sellTicket() { System.out.println("卖长途汽车票"); } } public class Steamer extends Vehicle{ public void sellTicket() { System.out.println("卖轮船票"); } } public class Taxi extends Vehicle{ public void sellTicket() { System.out.println("卖出租车票"); } } public class Train extends Vehicle{ public void sellTicket() { System.out.println("卖火车票"); } } public class Tricycle extends Vehicle{ public void sellTicket() { System.out.println("卖三轮车票"); } } public class Test_Vehicle { public static void main(String[] args) { Coach coach = new Coach(); coach.sellTicket(); AirPlane airplane = new AirPlane();
5

airplane.sellTicket(); Steamer steamer = new Steamer(); steamer.sellTicket(); Train train = new Train(); train.sellTicket(); Taxi taxi = new Taxi(); taxi.sellTicket(); Tricycle tricycle = new Tricycle(); tricycle.sellTicket(); } } 接口: public interface Vehicle { // 交通工具接口 void sellTicket(); } public class AirPlane implements Vehicle{ public void sellTicket() { System.out.println("卖飞机票"); } } public class Coach implements Vehicle{ public void sellTicket() { System.out.println("卖长途汽车票"); } } public class Steamer implements Vehicle{ public void sellTicket() { System.out.println("卖轮船票"); } } public class Taxi implements Vehicle{ public void sellTicket() { System.out.println("卖出租车票"); } }
6

public class Train implements Vehicle{ public void sellTicket() { System.out.println("卖火车票"); } } public class Tricycle implements Vehicle{ public void sellTicket() { System.out.println("卖三轮车票"); } } public class Test_Vehicle_Interface { public static void main(String[] args) { Vehicle coach = new Coach(); coach.sellTicket(); Vehicle airplane = new AirPlane(); airplane.sellTicket(); Vehicle steamer = new Steamer(); steamer.sellTicket(); Vehicle train = new Train(); train.sellTicket(); Vehicle taxi = new Taxi(); taxi.sellTicket(); Vehicle tricycle = new Tricycle(); tricycle.sellTicket(); } } 2、 public interface Cook { void cook(); } public class EdibleOil implements Cook{ public void cook() { System.out.println("烹饪需要食用油"); }
7

} public class Fruits implements Cook{ public void cook() { System.out.println("烹饪需要水果"); } } public class Meat implements Cook{ public void cook() { System.out.println("烹饪需要肉"); } } public class MonosodiumGlutamate implements Cook{ public void cook() { System.out.println("烹饪需要味精"); } } public class Salt implements Cook{ public void cook() { System.out.println("烹饪需要食用盐"); } } public class Sugar implements Cook{ public void cook() { System.out.println("烹饪需要糖"); } } public class Vegetable implements Cook{ public void cook() { System.out.println("烹饪需要蔬菜"); } } public class Water implements Cook{ public void cook() { System.out.println("烹饪需要水"); } } public class Test_Cook { public static void main(String[] args) {
8

Cook vegetable = new Vegetable(); vegetable.cook(); Cook fruits = new Fruits(); fruits.cook(); Cook meat = new Meat(); meat.cook(); Cook water = new Water(); water.cook(); Cook edibleoil = new EdibleOil(); edibleoil.cook(); Cook salt = new Salt(); salt.cook(); Cook sugar = new Sugar(); sugar.cook(); Cook monosodiumglutamate = new MonosodiumGlutamate(); monosodiumglutamate.cook(); } } 3、 public interface Animal { // 动物接口 void run(); void breathe(); } public class Bird implements Animal{ public void run() { System.out.println("鸟可以在天空飞翔。"); } public void breathe() { System.out.println("鸟可以自由呼吸。"); } } public class Fish implements Animal{ // 水上动物
9

public void run() { System.out.println("鱼可以在水中游动。"); } public void breathe() { System.out.println("鱼可以在水中呼吸。"); } } public abstract class LandAnimal implements Animal{ // 只实现部分方法, 因此声名为抽 象类 public void breathe(){ // 陆地动物,只实现接口中的 breath 方法 System.out.println("陆地动物可以呼吸。"); } } public class Tiger extends LandAnimal{ public void run() { System.out.println("老虎是陆地动物,可以奔跑。"); } public void breathe(){ super.breathe(); System.out.println("老虎是陆地动物,可以呼吸。"); } } public class Test_Interface { public static void main(String[] args) { Animal an1 = new Fish(); // 水生动物鱼 an1.run(); an1.breathe(); Animal an2 = new Tiger(); // 陆生动物 an2.run(); an2.breathe(); Animal an3 = new Bird(); an3.run(); an3.breathe(); } }

10


相关文章:
第9章 抽象类和接口.doc
第9章 抽象类和接口 - 9.7 习题 一、选择题 1、BD *A Clonab
第9章 接口和抽象类_图文.ppt
第9章 接口和抽象类 - 接口和抽象类 第九章 回顾 ? ? ? 方法覆盖是指在
...程序设计教程》第9章实现抽象图形 抽象类与接口.pdf
3《C# 3.0项目导向与实训程序设计教程》第9章实现抽象图形 抽象类与接口 - 第9章 实现抽象图形抽象类与接口 能力目标: 1. 理解关键字 abstract、sealed、...
10第10章 抽象类和接口._图文.ppt
第9章 抽象类和接口第 II篇 的必备基础第5章 数组 第6章 对象和类 第7章 字符串 第8章后可涉及图形界面 第8章 继承和多态 第9章抽象类和接口 - 10章...
第09章统一接口不同实现_图文.ppt
计算机程序设计(C++) 第9章 统一接口不同实现多态性 西安交通大学 计算机...? 【算法描述】通过抽象类以及基类对象或者指针访问派生类对象实现动 态绑定 22...
Java核心逻辑第9章_接口_图文.ppt
Java核心逻辑第9章_接口_哲学_高等教育_教育专区。JAVA核心逻辑第九章:接口 ...拖拉机,摩托车不需要空调,导航,音乐合理处理,去掉抽象类的空调,导航,音乐在子...
抽象类和接口案例.doc
第9章 抽象类和接口 46页 2下载券 有关接口和抽象类 3页 1下载券 抽象类
第9章 Java接口_图文.ppt
第9章 Java接口 - Java面向对象程序设计基础 第9章 接口 东软电子出版社 Java面向对象程序设计基础 本章学习目标 ? 理解接口和内部类的作用 ? 掌握接口和内部类...
第10章 抽象类和接口_图文.ppt
第10章 抽象类和接口 10.1 引言 10.2 抽象类 10.3 日历类Cal
第9章JAVA考试试卷(蒋晓明 周诚).pdf
第9章JAVA考试试卷(蒋晓明 周诚) - 一、选择题 1.关于 JAVA 中的抽象类方法,下面哪个是正确的?A I.它不包含方法. II.它不能被定义为 PUBLIC. (a) 只有...
第9章java考试试卷(蒋晓明,周诚).doc
第9章java考试试卷(蒋晓明,周诚)_其它_高等教育_教育专区。JAVA试题一...C.抽象类可以实例对象。 D.可以实现多态。 3.下列关于接口和抽象类的说法不...
Java讲义9-10 抽象类与接口 内部类_图文.ppt
Java讲义9-10 抽象类与接口 内部类_工学_高等教育_教育专区。供对java有兴趣...java抽象类和接口讲义 18页 1下载券 JAVA接口理解 3页 5下载券 第8章_面向...
第8章 继承、抽象类和接口_图文.ppt
第8章 继承、抽象类和接口 - L/O/G/O 第 8章 继承、抽象类和接口 1
第9章笔记.doc
第9章笔记_研究生入学考试_高等教育_教育专区。回顾: 三个修饰符: Static:...一个类只能继承一个抽象类,但是可以实现多个接口接口定义用 interface,抽象...
抽象类和接口习题.doc
父类中被覆盖的方法 D 任何方法都可以被覆盖 分析: 在子类中调用父类方法...第9章 抽象类和接口 暂无评价 10页 1下载券 抽象类和接口异同 暂无评价 2...
第7章 抽象类与接口_图文.ppt
第7章 抽象类与接口 - Java语言与系统设计 中南大学信息科学与工程学院 计算机工程系 黄家玮 jiaweihuang@csu.edu.cn 第7章 抽象类与接口 ? 对象的类型转换 ....
第8章--抽象类与接口_图文.ppt
第8章--抽象类与接口 - 丁振凡主编《java语言程序设计》... 第8章--抽象类与接口_IT/计算机_专业资料。丁振凡主编《java语言程序设计》 ★ 8.1.1 抽象类的定...
(抽象类和接口)自测题.doc
(抽象类和接口)自测题_计算机软件及应用_IT/计算机_专业资料。10.1 在下面类...抽象类和接口习题 暂无评价 4页 1下载券 第9章 抽象类和接口 暂无评价 10...
第08章_课后作业_抽象类、接口、包和常用API.pdf
第08章_课后作业_抽象类接口、包和常用API - 抽象类接口、包和常用 API 知识点:抽象类接口、String 类 一、编程题 1. 编写固定长度栈和动态栈,完成入...
第8章_接口与抽象类.ppt
第8章_接口与抽象类_数学_自然科学_专业资料。第8章 接口与抽象类 本章目标.
更多相关标签: