第04周 预习:面向对象设计、继承与Object

课前问题列表

  1. 为什么说Java中的所有类都is-a Object?
  2. 在JDK文档中查找Object的toString方法。说一说,该方法有什么用?使用Eclipse查看Object的toString方法的代码,结合代码说说该代码的用途。
  3. 在Eclipse中查看Object的equals方法的代码,说说equals的用途。该方法被什么修饰符修饰,意味着什么?什么时候需要覆盖equals方法?结合String类的equals方法说说覆盖如何体现子类特有的特性?
  4. 如果在子类中想要复用父类的代码,要怎么办?
  5. 可选:继承是复用代码的唯一方式吗?

answer:

question1:为什么说Java中的所有类都is-a Object?

1.Object是java中的最大父类,所有的类都自动继承于Object,继承于Object类可以整合一些基本的方法,例如tostring,equals等,如果想要重写也很方便。

question2:在JDK文档中查找Object的toString方法。说一说,该方法有什么用?使用Eclipse查看Object的toString方法的代码,结合代码说说该代码的用途。

(1)下图是toString源码:

 (2)继承于Object的toString方法会以字符串形式返回调用他的对象所在类的包加上地址

我们在java中自己编写的类可以重写Object里的toString方法,重写方法只能修改方法体里的内弄,以@overrid开头。对于一些基本方法一般在对应的编译器都有快速完成功能。

question3:在Eclipse中查看Object的equals方法的代码,说说equals的用途。该方法被什么修饰符修饰,意味着什么?什么时候需要覆盖equals方法?结合String类的equals方法说说覆盖如何体现子类特有的特性?

(1)这是equals在java中的源码,比较的是两者是否为同一个对象,无法比较对象里的成员变量的值。

 (2)这是重写过的equals方法,只有当对象中的所有成员变量的值比较都为true结果才返回true。

(3) 从写次代码同样可以利用编译器自动完成,如果存在父类(非Object)的话,先调用父类的equals方法,返回true之后在继续比较子类的成员变量。

question4:如果在子类中想要复用父类的代码,要怎么办?

可以利用super关键字找到父类以public修饰的变量和方法。

qusetion5:继承是复用代码的唯一方式吗?

(1).还有组合:组合是在类中创建新类,相比于继承的is-a组合更像是has-a,比如汽车作为一种类,而汽车中存在引擎,引擎又有属于自己的一些特性,这样的关系就可以通组合来完成。

(2).代理是在类中创建代理对象,在服务提供方和使用方之间充当一个媒介,控制真实对象的访问

(3).tip:finl关键字,表示最终的,不能变的,父类中的方法被final修饰后将不能重写,但是能被子类继承。

public class Main {
    public static void main(String[] args) {
        Student s =new Student();
        s.print();
        Person p = new Person();
        p.print();
    }

}
class Student extends Person{
    private String name;
    public Student() {
        super();
    }
    
}
class Person {
    private String name;
    private int age;

    public Person() {

    }
    final void print(){
        System.out.println("执行了");
    }

}

代码结果:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值