Java 接口与类之间继承例题
1,定义一个接口Assaultable(可攻击的),该接口有一个抽象方法attack()。
2,定义一个接口Mobile(可移动的),该接口有一个抽象方法move()。
3,定义一个抽象类Weapon,实现Assaultable接口和Mobile接口,但并没有给出具体的
实现方法。
4,定义3个类:Tank,Flighter,WarShip都继承自Weapon,分别用不同的方式实现Weapon 类中的抽象方法。
5,写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w(用来存储该军队所拥有的所有武器);该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小来初始化数组w。
该类还提供一个方法addWeapon(Weapon wa),表示把参数wa所代表的武器加入到数组w中。
在这个类中还定义两个方法attackAll()和moveAll(),让w数组中的所有武器攻击和移动。
6,写一个主方法去测试以上程序。
interface Assaultable{//可攻击的
void attack();
}
interface Mobile{//可移动的
void move();
}
abstractclass Weapon implements Assaultable,Mobile {
publicvoid attack(){}
publicvoid move(){}
}
class Tank extends Weapon{
publicvoid attack(){
System.out.println("坦克攻击!!!");
}
publicvoid move(){
System.out.println("坦克移动!!!");
}
}
class Flighter extends Weapon{
publicvoid attack(){
System.out.println("战斗机攻击!!!");
}
publicvoid move(){
System.out.println("战斗机移动!!!");
}
}
class Warship extends Weapon{
publicvoid attack(){
System.out.println("战船攻击!!!");
}
publicvoid move(){
System.out.println("战船移动!!!");
}
}
class Army{
Weapon[] w;
int max;
int j=0;
publicint getMax() {
return max;
}
publicvoid setMax(int max) {
this.max = max;
}
public Army(int max){
w= new Weapon[max];
this.max=max;
System.out.println("您最多拥有"+max+"个武器!!!") ;
}
publicvoid addWeapon(Weapon wa){
if(j<getMax()){
System.out.println("武器库足够!"+"已增加"+(j+1)+"个武器");
w[j]=wa;
j++;
}
else{
System.out.println("警告:武器库已满!!!不能增加武器!!!");
}
}
publicvoid attackAll(){
System.out.println();
System.out.println("所有武器准备战斗!!!");
for(int i=0;i<w.length;i++){
System.out.print((i+1)+"号");
w[i].attack();
}
}
publicvoid moveAll(){
System.out.println();
System.out.println("所有武器准备移动!!!");
for(int i=0;i<w.length;i++){
System.out.print((i+1)+"号");
w[i].move();
}
}
}
publicclass Test1 {
publicstaticvoid main(String[] args){
Army a = new Army(4);
a.addWeapon(new Tank());
a.addWeapon(new Flighter());
a.addWeapon(new Warship());
a.addWeapon(new Warship());
a.addWeapon(new Warship());
a.moveAll();
a.attackAll();
}
}。
java 调用interface继承类的方法
java 调用interface继承类的方法问题:如何在Java中调用继承自接口的类的方法?在Java中,接口是一种定义行为和功能的抽象类型。
它允许类实现该接口并提供必要的实现。
接口中定义的方法必须在实现类中进行具体实现才能调用。
这提供了一种强大的机制,使得类可以共享相同的行为和功能,同时维持各自的特定实现。
如果一个类通过实现接口来继承行为和功能,那么我们就要了解如何在Java中调用继承自接口的类的方法。
下面将一步一步回答这个问题。
步骤1:定义接口首先,我们需要定义一个接口,其中包含我们想要共享的行为和功能。
以下是一个示例接口的定义:javapublic interface MyInterface {void myMethod();}在这个例子中,我们定义了一个名为`MyInterface`的接口,并声明了一个名为`myMethod`的抽象方法。
步骤2:实现接口接下来,我们需要创建一个类来实现接口,并提供必要的实现。
以下是一个实现接口的示例类:javapublic class MyClass implements MyInterface {@Overridepublic void myMethod() {System.out.println("This is my method implementation.");}}在这个例子中,我们创建了一个名为`MyClass`的类,并实现了`MyInterface`接口。
在`MyClass`类中,我们提供了`myMethod`方法的具体实现。
步骤3:调用方法现在,我们可以在另一个类中调用继承自接口的类的方法。
以下是一个示例使用`MyClass`类的调用方法的类:javapublic class Main {public static void main(String[] args) {MyInterface myObj = new MyClass();myObj.myMethod();}}在这个例子中,我们创建了一个名为`Main`的类,并在`main`方法中创建了一个`MyInterface`类型的变量`myObj`。
java实验报告——继承与接口
System.out.print('\t'+"平均分");
System.out.println('\t'+"成绩等级");
for(int i=0; i<pg.length;i++) {
System.out.print(pg[i].Name); System.out.print('\t'+pg[i].Stu_type); System.out.print('\t'+String.valueOf(pg[i].C_score)); System.out.print('\t'+String.valueOf(pg[i].English_score)); System.out.print('\t'+String.valueOf(pg[i].Java_score)); System.out.print('\t'+String.valueOf(pg[i].score)); System.out.println('\t'+pg[i].sco_Level); } System.out.println(); } }
String Name=""; String Stu_type=""; int C_score; int English_score; int Java_score; int score; // String sco_Level=""; Sco_Level sco_Level;
public Student(String name,String stu_type,int sco1,int sco2,int sco3) {
java继承练习题
java继承练习题Java中的继承是面向对象编程中的重要概念,它允许我们创建一个类(称为子类或派生类),继承另一个类(称为父类或基类)的属性和方法。
通过继承,子类可以利用父类的代码,从而实现代码的复用和扩展。
本文将介绍一些Java继承的练习题,以帮助读者加深对继承的理解和应用。
1. 继承基本概念题(1)什么是继承?为什么使用继承?(2)Java中如何定义一个继承关系?(3)继承的优缺点是什么?2. 继承的语法练习题假设有两个类:Person和Student。
Person类具有以下属性和方法:```public class Person {protected String name;protected int age;public Person(String name, int age) { = name;this.age = age;public void introduce() {System.out.println("My name is " + name + ", I am " + age + " years old.");}}```Student类继承自Person类,并具有自己的属性和方法:```public class Student extends Person {private String school;public Student(String name, int age, String school) {super(name, age);this.school = school;}public void study() {System.out.println("I am studying at " + school + ".");}}请编写一个Java程序,创建一个Student对象,并调用introduce()和study()方法。
java继承练习题
java继承练习题Java继承练习题Java是一种面向对象的编程语言,其核心思想是将现实世界中的事物抽象为对象,并通过类的定义和实例化来描述和操作这些对象。
在Java中,继承是一种重要的机制,它允许一个类继承另一个类的属性和方法,从而实现代码的复用和扩展性。
在本文中,我们将通过一些练习题来巩固对Java继承的理解和应用。
练习题一:动物类和子类我们先定义一个动物类Animal,它具有属性name和age,并且有一个方法say()用于输出动物的叫声。
接下来,我们定义两个子类Dog和Cat,它们分别继承自Animal类,并且分别重写父类的say()方法。
其中,Dog类的say()方法输出"汪汪汪",Cat类的say()方法输出"喵喵喵"。
```javaclass Animal {protected String name;protected int age;public Animal(String name, int age) { = name;this.age = age;}public void say() {System.out.println("动物发出叫声");}}class Dog extends Animal {public Dog(String name, int age) {super(name, age);}@Overridepublic void say() {System.out.println("汪汪汪");}}class Cat extends Animal {public Cat(String name, int age) {super(name, age);}@Overridepublic void say() {System.out.println("喵喵喵");}}public class AnimalTest {public static void main(String[] args) {Animal animal = new Animal("动物", 5);animal.say();Dog dog = new Dog("小狗", 2);dog.say();Cat cat = new Cat("小猫", 1);cat.say();}}```练习题二:形状类和子类接下来,我们定义一个形状类Shape,它具有一个抽象方法area()用于计算形状的面积。
java中的接口与继承,接口的例子讲解
java中的接⼝与继承,接⼝的例⼦讲解extends 继承类;implements 实现接⼝。
简单说:1.extends是继承⽗类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,2.JAVA中不⽀持多重继承,但是可以⽤接⼝来实现,这样就要⽤到implements,3.继承只能继承⼀个类,但implements可以实现多个接⼝,⽤逗号分开就⾏了 ,⽐如 class A extends B implementsC,D,Eextends和implements有什么不同?对于class⽽⾔,extends⽤于(单)继承⼀个类(class),⽽implements⽤于实现⼀个接⼝(interface)。
interface的引⼊是为了部分地提供多继承的功能。
在interface中只需声明⽅法头,⽽将⽅法体留给实现的class来做。
这些实现的class的实例完全可以当作interface的实例来对待。
在interface之间也可以声明为extends(多继承)的关系。
注意:⼀个interface可以extends多个其他interface。
接⼝实例:例⼦1:⼀共包括4个类,分别是CAR.java,BigCar.java,TestCar.java,CarInterface.java。
CAR.java:声明⼀个接⼝,不实现⽅法,只声明⽅法,接⼝不能实例化。
package com.su.callback;publicinterface CAR {void start();void stop();}BigCar.java:⽤BigCar类实现接⼝CAR,实现它的⽅法,也就是写程序结构体。
BigCar是能够实例化的,BigCar的对象是Car型的。
当你需要调⽤接⼝CAR的⽅法的时候,需要⽤CAR的对象来调⽤CAR的⽅法,但是CAR⼜不能实例化,我们就可以⽤实现了CAR的BigCar的对象来调⽤CAR 的⽅法。
java中继承关系笔试题
1.在Java中,子类可以继承父类的哪些特性?
答:子类可以继承父类的所有非私有属性和方法,包括公有、受保护和默认访问级别。
此外,子类还可以继承父类的构造函数和初始化块。
2.如果一个子类要继承父类的方法,应该如何实现?
答:子类要继承父类的方法,可以使用与父类方法同名、相同参数列表和相同返回类型的方法。
如果子类想要重写父类的方法,可以使用@Override注解来标记。
3.什么是多态性?在Java中如何实现多态性?
答:多态性是指一个接口可以有多种实现方式,或者一个对象可以有多种形态。
在Java中,多态性可以通过继承和接口实现。
子类可以继承父类的属性和方法,也可以实现接口的规范,从而让一个对象在不同上下文中表现出不同的行为。
4.如果一个子类要继承父类的构造函数,应该如何实现?
答:如果一个子类要继承父类的构造函数,可以在子类的构造函数中通过super关键字调用父类的构造函数。
如果子类没有显式地定义构造函数,则会自动调用父类的无参构造函数。
5.什么是抽象类?在Java中如何定义抽象类?
答:抽象类是一个不能被实例化的类,它只能作为其他类的基类。
抽象类可以包含抽象方法和非抽象方法。
在Java中,使用abstract关键字来定义抽象类,抽象类不能被实例化,但可以被继承。
如果一个子类继承了一个抽象类,那么它必须实现该抽象类中的所有抽象方法。
JAVA复习习题(继承)
类的继承习题一、选择题1. Java语言的类间的继承关系是( B )。
A) 多重的B) 单重的C) 线程的D) 不能继承2. 以下关于Java语言继承的说法正确的是( C )。
A)Java中的类可以有多个直接父类B)抽象类不能有子类C)Java中的接口支持多继承D)最终类可以作为其它类的父类3. 现有两个类A、B,以下描述中表示B继承自A的是(D)。
A) class A extends B B) class B implements AC) class A implements B D) class B extends A4. 下列选项中,用于定义接口的关键字是( A)。
A)interface B) implements C) abstract D) class5. 下列选项中,用于实现接口的关键字是( B)。
A)interface B) implements C) abstract D) class6. Java语言的类间的继承的关键字是( B )。
A) implements B) extends C) class D) public7. 以下关于Java语言继承的说法错误的是( A )。
A)Java中的类可以有多个直接父类B)抽象类可以有子类C)Java中的接口支持多继承D)最终类不可以作为其它类的父类8. 现有两个类M、N,以下描述中表示N继承自M的是(D)。
A) class M extends N B) class N implements MC) class M implements N D) class N extends M9. 现有类A和接口B,以下描述中表示类A实现接口B的语句是(A)。
A) class Aimplements B B) class B implements AC) class Aextends B D) class B extends A10. 下列选项中,定义抽象类的关键字是( C)。
java继承习题
(一)选择题1)若在某一个类定义中定义有如下的方法:final void workDial( )该方法属于A.本地方法B.最终方法C.静态方法D.抽象方法2)下面哪个方法与题目中的不是重载方法public int max(int x,int y) A.public double max(double x,double y) B.publicintmax(intn,int k) C.publicintmax(intx,int y, int z) D.public double max(double n,double k) 3)为了区分类中重载的同名的不同方法,要求A.参数列表不同B.调用时用类名或对象名做前缀C.参数名不同D.返回值类型不同4)某个类中存在一个方法:void getSort(int x),以下能作为该方法的重载的声明的是?A.publicgetSort(float x) B.doublegetSort(intx,int y) C.int getSort(int y) D.voidget(intx,int y) 5)A派生出子类B ,B派生出子类C,并且在Java源代码中有如下声明:A a0=new A(); A a1 =new B(); A a2=new C(); 问以下哪个说法是正确的?} A.只有第1行能通过编译B.第1、2行能通过编译,但第3行编译出错C.第1、2、3行能通过编译,但第2、3行运行时出错D.第1行、第2行和第3行的声明都是正确的6)设有下面两个类的定义。
class Person { long id; // 身份证号身份证号String name; // 姓名姓名} class Student extends Person { int score; // 入学总分入学总分} intgetScore() { return score; } } 的关系是?则类Person和类Student的关系是?} A.包含关系包含关系B.继承关系C.关联关系关联关系D.上述类定义有语法错误上述类定义有语法错误7)下列叙述中,正确的是? A.子类继承父类的所有属性和方法子类继承父类的所有属性和方法B.子类可以继承父类的私有的属性和方法子类可以继承父类的私有的属性和方法C.子类可以继承父类的公有的属性和方法D.创建子类对象时,父类的构造方法都要被执行创建子类对象时,父类的构造方法都要被执行8)现有两个类A、B,以下描述中表示B继承自A的是? A.class A extends B B.class B implements A C.classA implements B D.classB extends A 9)下列叙述中错误的是?下列叙述中错误的是?A.一个子类可有多个父类B.父类派生出子类父类派生出子类C.子类继承父类子类继承父类D.子类只能有一个父类子类只能有一个父类10)关于继承下面说法正确的是关于继承下面说法正确的是A.子类能够继承父类私有的属性; B.子类可以重写父类的final方法; C.子类能够继承不同包父类的protected属性; D.子类能够继承不同包父类的缺省属性; 11)有名字为A的包和名为B的类,下面的语句正确的是的类,下面的语句正确的是A.package A.B;B.package B;C.import A.* ;D.import B; 12)声明一个名字为P的包,下面的语句正确的是的包,下面的语句正确的是D.package "p"; A.packagePkg;B.Package P;C.package P;D.package "p"; 13)导入包A中的类AA应该使用下面哪条语句? A.import A.AA ;B.import AA.A;C.package A;D.package AA;14)下列针对int类型的私有属性age的访问器方法格式正确的是?的访问器方法格式正确的是?A.voidgetAge(int age) B.int getAge(int age) C.voidsetAge(int age) D.int setAge() 15)下列关于访问器方法说法正确的是?下列关于访问器方法说法正确的是?A.get方法可以读取属性的值B.set方法用来读取属性的值方法用来读取属性的值C.必须为每个private属性提供访问器方法属性提供访问器方法D.public属性不能有访问器方法属性不能有访问器方法16)表示数据或方法可以只能被定义它的类访问的是表示数据或方法可以只能被定义它的类访问的是A.public B.默认的默认的C.private D.protected 17)表示数据或方法只能被其它包中的子类访问的是表示数据或方法只能被其它包中的子类访问的是A.public B.默认的默认的C.private D.protected 18)对于子类的构造函数说明,下列叙述中不正确的是对于子类的构造函数说明,下列叙述中不正确的是 ? A.子类无条件地继承父类的无参构造函数子类无条件地继承父类的无参构造函数B.子类可以在自己的构造函数中使用super关键字来调用父类的含参数构造函数,但这个调用语句必须是子类构造函数的第一个可执行语句个调用语句必须是子类构造函数的第一个可执行语句C.在创建子类的对象时,在创建子类的对象时,将先执行继承自父类的无参构造函数,然后再执行自己的构造将先执行继承自父类的无参构造函数,然后再执行自己的构造函数函数D.子类不但可以自动执行父类的无参构造函数,也可以自动执行父类的有参构造函数19)当你编译运行下列程序代码,会得到什么结果? private class Base{ Base(){ int i = 100; System.out.println(i); } } public class Pri extends Base{ sta cint i = 200; public sta c void main(String argv[]){ Pri p = new Pri(); System.out.println(i); } } A.这段代码不能通过编译B.输出200 C.输出100和200 D.输出100 (二)简答题1)简述修饰类的可见性修饰符有哪些及其作用?简述修饰类的可见性修饰符有哪些及其作用?2)简述修饰类的成员的可见性修饰符有哪些及其作用?简述修饰类的成员的可见性修饰符有哪些及其作用?3)导入包时可导入其他包中哪些类?如何导入包p中的全部可以使用的类,请写出语句?请写出语句? 4)包的作用是什么?如何声明一个包?包的作用是什么?如何声明一个包?5)写出set和get方法定义的格式。
java集合继承关系
java集合继承关系
Java集合框架中的继承关系如下所示:
1. Collection接口是所有集合接口的根接口,它继承了Iterable
接口。
2. List接口和Set接口都继承自Collection接口。
3. Queue接口继承自Collection接口,它定义了队列的行为。
4. Deque接口继承自Queue接口,但它还定义了双端队列的操作。
5. Map接口是所有映射接口的根接口。
6. SortedSet接口和SortedMap接口都继承自Set接口和Map接口,分别定义了排序集合和排序映射的操作。
7. NavigableSet接口和NavigableMap接口都继承自SortedSet接
口和SortedMap接口,分别定义了带导航功能的排序集合和排序映射的操作。
8. AbstractCollection、AbstractSet、AbstractList、AbstractSequentialList、AbstractQueue和AbstractMap是实现集合和
映射的抽象类,它们提供了一些基本的实现。
9. ArrayList和LinkedList都实现了List接口,它们提供了不同
的列表实现方式。
10. HashSet、LinkedHashSet和TreeSet都实现了Set接口,它们
提供了不同的集合实现方式。
11. HashMap、LinkedHashMap和TreeMap都实现了Map接口,它们提供了不同的映射实现方式。
java练习(类和接口)
1. (分值:0.7 分)Java 语言中创建一个对象使用的关键字为A: classB: interfa ceC: newD: create2. (分值:0.7 分)设有对象x 具有属性a 则访问该属性的方法为A: a.xB: a.x()C: x.aD: x.a()3. (分值:0.7 分)以public修饰的类如:publicclass Car{…} 则Car( )A: 可被其它程序包中的类使用B: 仅能被本程序包中的类使用C: 不能被任意其它类使用D: 不能被其它类继承4. (分值:0.7 分)Java 语言中,只限子类或者同一包中的类的方法能访问的访问权限是( )A: publicB: privateC: protect edD: <无修饰>5. (分值:0.7 分)有Java 语句如下,则说法正确的是()int []a,b=new int[3]; A: 此语句是错误的B: a.length的值为3C: b.length的值为3D: a.length和b.length的值都为36. (分值:0.7 分)设有数组定义i nt[][] x={{1,2},{3,4,5},{6},{}};,则x.length的值为( )A: 3B: 4C: 6D: 77. (分值:0.7 分)在Java 语言的java.util 包中,用于语言符号(单词)分析的类是()A: stringT okeniz erB: StringT okeniz erC: ToKeniz erD: tokeniz er8. (分值:0.7 分)接口的所有变量和方法分别默认为是()A: final static和public abstrac tB: final static和public finalC: publicstatic和public abstrac tD: publicstatic和public final9. (分值:0.7 分)下列有关Jav a 的叙述错误的是()A: 强类型语言B: 与平台无关C: 可以使用汉字变量名D: 不检查数组下标越界10. (分值:0.7 分)设数组Arra y 由以下语句定义i nt age=new int[10];则数组的第一个元素的正确引用方法为( )A: age[1]B: Age[0]C: age[]D: age[0]11. (分值:0.7 分)建立一个把li st 字符串数组元素作为选择条目的列表list1,可以使用的代码是A: list1=JList(list)B: JList list1=JList(list)C: JList list=new JList(list1)D: JList list1=new JList(list)12. (分值:0.7 分)下面哪一项是J ava 实现动态多态性的具体手段()A: 重载;B: 覆盖(重写)C: 接口D: 抽象类13. (分值:0.7 分)下列说法哪个是正确的?A: 子类不能定义和父类同名同参数的方法B: 子类只能继承父类的方法,而不能重载C: 重载就是一个类中有多个同名但有不同形参和方法体的方法D: 子类只能覆盖父类的方法,而不能重载14. (分值:0.7 分)下列类不属于j ng.*包的是A: MathB: SystemC: DateD: StringB uffer15. (分值:0.7 分)System类属于下列哪个包?A: java.io.*B: ng.*C: java.util.*D: java.awt.*16. (分值:0.7 分)对于以下声明:Strings1="hello";Strings2="world";Strings3;下面的操作合法的是A: s3=s1+s2;B: s3=s1-s2;C: s3=s1&s2;D: s3=s1&&s2;17. (分值:0.7 分)下面的代码合法的是A: publicabstrac t method();B: publicabstrac t void method();C: publicabstrac t void method(){ };D: publicvoid method() impleme nts abstrac t;18. (分值:0.7 分)下列数组的定义合法的是A: int a = (1,2,3);B:intd[]=(1…3);C: int []a[] = new int[3][];D: char [][]c=new char[][4];19. (分值:0.7 分)有整型数组:int[] x={12,35,8,7,2};,则调用方法Arrays.sort(x)后,数组x 中的元素值依次是( ).A: 2 7 8 12 35B: 12 35 8 7 2C: 35 12 8 7 2D: 8 7 12 35 220. (分值:0.7 分)下列数组定义及赋值,错误的是A: int intArra y[];B: intArra y=new int[3];intArra y[1]=1;intArra y[2]=2;intArra y[3]=3;C: int a[]={1,2,3,4,5};D: int[][]=new int[2][];a[0]=new int[3];a[1]=new int[3];21. (分值:0.7 分)在java 中,字符串由jang.String和()定义A: ng.StringC harB: ng.StringB ufferC: java.io.StringC harD: java.io.StringB uffer22. (分值:0.7 分)下列不属于面向对象编程的三个特征的是A: 封装B: 指针操作C: 多态性D: 继承23. (分值:0.7 分)类所实现的接口以及修饰不可以是A: publicB: abstrac tC: finalD: void24. (分值:0.7 分)下列类的定义,错误的是A: publicclass test extends Object{……}B: final class operato rs{……}C: clas sPoint{……}D:voidclassPoint{……}25. (分值:0.7 分)关键字supp er 的作用是A: 用来访问父类被隐藏的成员变量B: 用来调用父类中被重载的方法C: 用来调用父类的构造函数D: 以上都是26. (分值:0.7 分)下面程序定义了一个类,关于该类说法正确的是abstractclass abstrac tClass{……}A: 该类能调用new abstrac tClass(),方法实例化为一个对象B: 该类不能被继承C: 该类的方法都不能被重载D: 以上说法都不对27. (分值:0.7 分)关于对象的删除,下列说法正确的是A: 必须由程序员完成对象的清除B: java 把没有引用的对象作为垃圾收集起来并释放C: 只有当程序中调用Syste m.gc()方法时才能进行垃圾收集D: java 中的对象都很小,一般不进行删除操作。
