JAVA第五章面向对象(中)课后习题

1.面向对象的主要特征是什么?

封装,继承,多态

封装:把事物抽象成一个类,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系

继承:从已有的类(父类或者超类)中派生出新的类(子类),新的类能吸收已有类的数据属性和行为,并能扩展新的能力(方法的覆盖/重写)。JAVA不支持多继承,一个类只能有一个父类。父类是子类的一般化,子类是父类的特殊化(具体化)

多态:同名但不同方法,包括重载和覆盖

2.封装如何实现的?

>>修改属性的可见性来限制对属性的访问。

>>为每个属性创建一对赋值方法和取值方法,用于对这些属性的访问。

>>在赋值和取值方法中,加入对属性的存取限制。

例如:

 

3.对象之间如何相互作用?作用的条件是什么?

对象与对象的常见关系:

依赖,关联,聚合,组合,继承

参考:JAVA——21.对象与对象之间的关系_翟羽佳羽佳的博客-CSDN博客

4.protected修饰符有哪些特点?

>>protected 访问控制符能被用于方法和成员变量。

>> 声明为protected的方法和成员变量能被同一个包里的所有类所访问,就像默认修饰符package一样。
>>能被该类的子类所访问,子类可以和父类不在一个包中。
  
这样,当你想让一个类中的某个方法或成员变量在包中都可见,而且其子类也能访问(子类有可能和父类不在同一个包中)但又不想让所有类都可以访问该类时,就可以用protected修饰符。

5.Object都有哪些方法?

Object是所有类的共同祖先。在Object当中定义了许多方法,这些方法都可以被所有子类所继承。

 

6.重载的方法之间一般有什么关系?

关于重载:JAVA第五章(面向对象中)小结_洛小阳的博客-CSDN博客第四条

在代码编写中,重载的多个方法之间往往存在一定的调用关系,即一个方法写有实现功能,其他方法采用委托方式进行调用——体现程序共享的设计思想

 

7.子类覆盖父类方法需要什么条件?子类中定义与父类同名的方法一定是覆盖吗?

参见:JAVA第五章(面向对象中)小结_洛小阳的博客-CSDN博客第五条

8.封装,继承,和多态在面向对象程序设计中的用途是什么?

封装:提高代码的安全性;提高代码的复用性;高内聚”:封装细节,便于修改内部代码,提高可维护性;“低耦合”:简化外部调用,便于调用者使用,便于扩展和写作。

继承:从已有的类(父类或者超类)中派生出新的类(子类),新的类能吸收已有类的数据属性和行为,并能扩展新的能力(方法的覆盖/重写

多态:

1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。
2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。

9.设计Src和Dis两个类,Src中有一个被封装的属性,类型为int(要求为非负值),每当通过特定方法更改Src对象中的这个属性后,Dis对象都能得到通知,并向Src发消息获得此属性值

class Src
{
    int s;
    public Src(int _s){//构造函数,保证s的非负
        if(_s>=0)
            s = _s;
        else s=0;
    }
    public void change(Dis d){//设计一个特殊的方法来改变s的值,每次改变都会给Dis对象发通知
        for(int a=1;a<5;a++)
        {
            d.get();
            s=s+a*2;
        }
    }
}
class Dis
{
    Src src;
    public Dis(Src s){
        this.src = s; //Dis对象中拥有了Src对象的引用
    }
    public void invoke(){
        //Dis中对象发送消息给Src的对象
        System.out.println(src.s);
    }
    public void get()//用来接收通知的方法
    {
        this.invoke();
    }
}

public class Helloworld {
    public static void main(String[] args) {
        Src src = new Src(5);
        //产生Dis对象,并将Src对象引用作为参数传入
        Dis  dis   = new Dis(src);
        //发送消息,产生调用关系
        dis.src.change(dis);
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值