作业1

1、instanceof作用是什么?
Animal是Dog的父类;

Animal a = new Dog();
System.out.println(a instanceof Dog); //true
System.out.println(a instanceof Animal); //true
System.out.println(a instanceof Object); //true
判断a变量指向的对象,是否匹配指定类型,如果a为null,返回false。

2、什么是抽象方法?什么是抽象类?
如果一个类中的方法,只有方法定义,没有方法的具体实现,那么该方法被称为抽象方法。而拥有抽象方法的类叫做抽象类,用关键字***abstract***定义,抽象类不能直接实例化,如果要实例化抽象类,那么抽象类的变量要指向子类对象。

3、接口如何定义?接口如何实现?实现一个接口必须要做什么?
定义接口使用interface。实现接口使用implements
必须将接口中所有的抽象方法重写(如果不实现所有抽象方法,那么这个类必须是抽象类)

4、接口中的方法修饰符是什么?接口中的变量修饰符是什么?
public abstract
public static final

5、接口和抽象类的区别是什么?
1、抽象类和接口都不能直接实例化(不能直接用);
2、抽象类中可以有抽象方法,也可以有具体方法。但接口中只能有抽象方法;
3、抽象类中定义的变量是普通属性。但接口中定义的变量是公共的静态的常量;
4、一个类只能继承一个抽象类,但可以实现多个接口

6、什么时候使用继承?什么时候使用接口?
抽象属性和行为时使用继承,只抽象行为用接口


JAVA代码查错
a、
abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {}
}
定义抽象方法,不能有方法的实现


b、 abstract class Something {
private abstract String doSomething ();
}
private定义的方法默认是final,默认是不能重写抽象方法的。但是申明为抽象方法是要求子类重写。所以矛盾。所以抽象方法不能申明为私有的(private)和静态(static)。


c、public class Father{
public Father(int x){

}
}

class Child extends Father{
public Child(){

}
}
子类对象产生之前必须调用父类构造方法产生父类对象。那么子类构造方法的第一句默认为super()。如果父类中没有定义无参构造方法,那么子类构造方法必须显示调用


d、public class Father{
public void test(){

}
}

class Child extends Father{
public void speak(){
}
}
class Test{
public static void main(String[] args){
Father f = new Child();
f.speak();
}
}
多态调用时,父类变量指向子类对象,只能调用父类中定义的属性和方法,不能调用子类特有的属性和方法。
e、interface A{
int x = 0;
}
class B{
int x =1;
}
class C extends B implements A {
public void pX(){
System.out.println(x);
}
public static void main(String[] args) {
new C().pX();
}
}
当打印x时,引起 歧义不知道x是父类中继承的x,还是从实现接口中得到的x。
要访问父类中继承的x属性,通过super.x访问。
要访问接口中定义的x,由于接口中定义的变量修饰符为:public static final
通过接口名.x访问


说出运行结果

1、abstract class Base{
abstract public void myfunc();
public void another(){
System.out.println("Another method");
}
}

public class Abs extends Base{
public static void main(String argv[]){
Base a = new Abs();
a. another ();
}
public void myfunc(){
System.out.println("My Func");
}
public void another (){
super.another();
myfunc();
}
}

“Another method”
“My Func”

 

2、interface MyIn{}
public class MyClass implements MyIn{
static String str;
public MyClass(){

}
public static void main(String[] args) {
MyClass myClass = new MyClass();
System.out.print(myClass instanceof MyIn);
System.out.println(str instanceof String);
}
}
true
false


代码实现以下文字描述的系统。
1、手机有打电话、听歌、照像、摄像的功能。应该如何设计?(继承类,实现多个接口)
2、超人、鸟、飞机都会飞,现在空管局的人要控制这些会飞的东西。我们该怎么设计。

3、在一个游戏中,有盗贼,猎人,医生,农民,士兵几类人,这些人都有名称、等级,还可以自己介绍自己;
其中,
盗贼可以偷盗。
猎人可以打猎。
农民可以采矿。
盗贼、猎人和农民可以攻击。
农民、医生可以治疗。
士兵可以抵抗盗贼、猎人和农民等的攻击。
还有一个玩家可以控制这些角色。
设计这个系统。

转载于:https://www.cnblogs.com/ljjdeblogs/p/5897927.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值