第七章课后习题

1.this的三种用法:this.域变量、this.成员方法,在一些容易混淆的场合,借助this来明确表示用的是类的域变量;this(参数)引用重载的构造方法;this指代当前对象。
super的两种用法:super.域变量、super.成员方法;super(参数)继承构造方法。

2.(1)用new创建对象,为子类对象分配内存空间,对域变量进行默认初始化。(2)绑定构造方法,将new对象的参数传递给构造方法的形式参数。(3)调用this或super语句。(4)进行实例变量的显式初始化操作。(5)执行当前构造方法体中的程序代码。

3.类的域变量是在类的方法栈分配空间,方法中定义的局部变量是在方法栈中分配空间。

4.//建立抽象类:
abstract class Person{
private String name;
private int age;
public Person(String name,int age)
{
this.name=name;
this.age=age;
}
abstract public void Work();
}
//抽象类在继承方面的应用,学生继承人,工作为学习
class Student extends Person{
public Student(String name,int age)
{
super(name,age);
}
public void Work()
{System.out.println(“Study”);}
}
//抽象类在引用具体子类对象方面的应用
public class RunPerson{
private void Say(Person p)
{
System.out.println(“I am a”+p.getClass.getName())
}
public static void main(String args[]){
Student s=new Student(“A”,18);
Say(s);
}
}

5.接口的作用:当功能没哟实现和使用前,先定义接口,再进行功能的实现以及使用,可使功能的实现和使用以弱耦合的方式连接起来。接口相当于一种标准,类似于家电的说明书。

//定义接口
interface Way{
public abstract void goLeft();
public abstract void goRight();
}

//实现接口
class Bus impements Way{
public void goLeft()
{System.out.println(“I will go left”)};
public void goRight()
{System.out.println(“I will go right”)};
}

//使用接口
public class Passenger{
public static void main(String args[])
{
Way w=new Bus();
w.goLeft();
w.goRight();
}
}

6.抽象类与接口的同:都有抽象方法,都不能实例化。都有自己的声明,并能引用具体子类或实例类对象。
不同:抽象类可以有域变量,接口没有,接口只有静态常量。抽象类可以有具体方法,而且具体方法可以调用抽象方法,接口如果有方法,则全部是抽象方法。抽象类由子类继承,接口由实现类实现。抽象类扩展性弱,接口强。

7.引用有equals方法比较(判断是否指向同一对象,String、包装类将此方法覆盖,比较的是代表的值),使用“==”进行比较(比较的是引用是否相同),使用instance of比较引用类型。

8.内部类的作用:如果需要将一个类中的一些属性或方法对其他类进行封装,而只对一个类开放时,使用内部类。
使用匿名内部类的情况:在类中需要实例化这个类的地方,定义一个没有名称的类。

9.D

10.数据隐藏是将数据封装起来,是使用者不必知道内部结构便可使用。方法的覆盖只是重新定义了方法,并没有封装方法。

11.1对 2对 3对 4对 5错(要向下转型)6对 7错 (A1 A2为平行类) 8错(A2 A3并无继承关系)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.编写类MyDate.java 2.该类有如下构造方法 2.1 无参数构造方法public MyDate(),以当前的系统时间构造MyDate对象 2.2 public MyDate(int year, int month, int day), 以指定的年月日构造MyDate对象 3.该类有如下属性 3.1 private int year ;//年 3.2 private int month; //月 3.3 private int day; //日 4.该类有如下方法 4.1 public String after(int day); //返回当前对象代表的日期之后day天的日期,比如当前对象是2008-8-8,调用after(5)以后,应该返回2008-8-13,格式可自定义 4.2 public String before(int day); //返回当前对象代表的日期之前day天的日期,比如当前对象是2008-8-8,调用before(5)以后,应该返回2008-8-3,格式可自定义 4.3 public void setYear(int year); //设置年为指定值year 4.4 public void setMonth(int month); //设置月为指定值month 4.5 public void setDay(int day); //设置日为指定值day 4.6 public int getYear(); //返回当前对象的年 4.7 public int getMonth(); //返回当前对象的月 4.8 public int getDay(); //返回当前对象的日 4.9 public void set (int year, int month, int day); //设置年、月、日为指定的值year、month、day 4.10 public String toString();//以字符串形式返回当前对象的年月日,例如2008年08月08日,格式可自定义 4.11 public boolean equals(MyDate mydate);//当前对象与另一个对象比较,如果两个对象的年月日均相等,则返回true,反之返回false 5.编写TestMyDate.java,在main方法中对MyDate类的各个方法进行测试 6.按照编程规范为MyDate.java编写规范的代码 7.按照java doc API的要求,对代码编写规范的注释,然后利用javadoc.exe命令生成MyDate.java的API doc 8.撰写上机报告
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值