A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天我们学习了面向对象三大特性的最后一个多态。请按照自己的理解回答下面问题:

1.接口和抽象类的区别?

2.继承和实现的区别?

3.多态有什么好处?

4.什么时候需要用到向上转型?什么时候需要用到向下转型

7 个回复

倒序浏览
本帖最后由 张培聪 于 2019-8-19 20:24 编辑

1.接口和抽象类的区别?
   一.成员组成部分:抽象类:成员变量,常量,(各种)方法
                               接口:只有常量,(各种方法)
   二.抽象类是对共有行为的抽取和约束
       接口是对特有行为的抽取和约束
   三.抽象类对类和类的耦合性较大
       接口解耦合了
   四.思想区别:抽象类是 is a的关系  更注重是不是
                        接口是like a 的关系 更注重有没有

2.继承和实现的区别?
     继承是类与类之间或者接口与接口之间的关系 使用extends ,接口可以继承多个,但类只能继承一个
     实现是接口和类之间的关系,使用implements ,接口可以多实现

3.多态有什么好处?    为什么使用多态? 因为程序的可扩展性低,所以才使用多态

    提高了程序的可扩展性,利用多态访问特点使方法具有通用性,及一个方法可以给所有子类调用(前提子类必须重写父类方法才有意义)
     

4.什么时候需要用到向上转型?什么时候需要用到向下转型
   向上转型 只能访问父类的成员属性,当不需要使用到子类的成员时就可以使用向上转型
   向下转型  当你想要访问子类独有成员时,那就需要用到向下转型
回复 使用道具 举报
今天我们学习了面向对象三大特性的最后一个多态。请按照自己的理解回答下面问题:

1.接口和抽象类的区别?
答:①抽象类是共性的抽取,接口是功能的拓展
②抽象类只能继承一个,但是接口可以实现多个

2.继承和实现的区别?
答:继承只能单继承,不能多继承;实现可以单实现,也可以多实现

3.多态有什么好处?
答:提高的代码的可拓展性,可以使用父类/接口作为方法的参数列表的参数类型,所有的子类或者实现类都可以传递进来

4.什么时候需要用到向上转型?什么时候需要用到向下转型
答:向上转型:只访问父类子类的共有成员,不访问子类的特有成员
向下转型:当要访问子类中的特有成员时用向下转型
回复 使用道具 举报

1.接口和抽象类的区别?
答:
(1) 成员区别
抽象类:变量,常量;有构造方法;有抽象方法,也有非抽象方法
接口:常量;抽象方法
(2) 关系区别
类与类:继承,单继承
类与接口:实现,可以单实现,也可以多实现
接口与接口:继承,单继承,多继承
(3) 设计理念区别
抽象类:对类抽象,包括属性、行为,完成
接口:对行为抽象,主要是行为

2.继承和实现的区别?
答:
抽象类:更多的是体现对共性的抽取,对共有行为的约束
实现:接口的使用更多的是体现对特有行为进行约束

3.多态有什么好处?
答:
方法的参数类型用父类类型去接收,所有子类对象都可以传递,提高了程序的扩展性
使用多态的前提条件:
a、有继承或者接口实现关系
b、子类需要重写父类的方法(既使运行方法时可以访问子类自己写的方法)
c、父类引用指向子类对象

4.什么时候需要用到向上转型?什么时候需要用到向下转型
答:
向上转型:父类引用指向子类对象,即子类对象向上提升为父类
向下转型:向上转型后,当对象需要再引用子类的方法内容时,需要将父类引用,向下转为对应的子类类型
注意:向下转型必须转到之前向上转型所对应的对象

回复 使用道具 举报
1. 成员区别:
(1)抽象类
   变量,常量;有构造方法;有抽象方法,也有非抽象方法
(2)接口
   常量;抽象方法
   关系区别:
(1)类与类
    继承,单继承
(2)类与接口
    实现,可以单实现,也可以多实现
(3)接口与接口
    继承,单继承,多继承
    设计理念区别:
(1)抽象类
    对类抽象,包括属性、行为
(2)接口
    对行为抽象,主要是行为

2. 类只能继承一个,接口能多实现

3. 提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作

4. 父类引用指向子类对象就用到向上转型
    访问子类独有成员就用到向下转型
回复 使用道具 举报
1.        接口和抽象类的区别?
①抽象类是共性的抽取,接口是功能的拓展;
②抽象类只能继承一个,但是接口可以实现多个。

2.继承和实现的区别?
①格式不同:继承用 extends关键字;实现用implements关键字。
②关系不同:继承用于类与类、接口与接口的关系;实现用于类和接口的关系;
③继承支持多级继承,但不支技多个继承;实现可以支持多个接口。

3.多态有什么好处?
消除了类之间的耦合关系,大大提高了程序的可扩展性和可维护性。

4.什么时候需要用到向上转型?什么时候需要用到向下转型
当子类作为对象代表父类时,需要向上转型;
当需要使用子类特有成员时,需要向下转型。
回复 使用道具 举报
1.接口和抽象类的区别?

在抽象类中,抽象方法本质上是定义接口规范:即规定高层类的接口,从而保证所有子类都有相同的接口实现,这样,多态就能展现出优点。

如果一个抽象类没有字段,所有方法全部都是抽象方法,就可以把该抽象类改写为接口:interface。

接口定义了纯抽象规范,一个类可以实现多个接口;

接口也是数据类型,适用于向上转型和向下转型;

接口的所有方法都是抽象方法,接口不能定义实例字段;


2.继承和实现的区别?

Java中一个类只允许单继承,所有类最终的根类是Object
而一个类可以有多个接口实现;

他们都适用于向上转型和向下转型;

3.多态有什么好处?

多态是同一个行为具有多个不同表现形式或形态的能力。
1. 减小耦合性
2. 可替换性
3. 可扩充性
4. 灵活性
5. 简化性

4.什么时候需要用到向上转型?什么时候需要用到向下转型


1、父类引用可以指向子类对象,子类引用不能指向父类对象。

2、把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转型。

   如Father father = new Son();

3、把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转型。

   如father就是一个指向子类对象的父类引用,把father赋给子类引用son 即Son son =(Son)father;

   其中father前面的(Son)必须添加,进行强制转换。

4、upcasting 会丢失子类特有的方法,但是子类overriding 父类的方法,子类方法有效

5、向上转型的作用,减少重复代码,父类为参数,调有时用子类作为参数,就是利用了向上转型。这样使代码变得简洁。体现了JAVA的抽象编程思想。
回复 使用道具 举报
1.接口和抽象类的区别?
  抽象类的成员:常量,变量,构造方法,抽象方法和非抽象方法
  接口的成员:常量和抽象方法
  类与类之间是继承关系
  类和接口之间是实现关系
  接口和接口可以是一个或多个继承
2.继承和实现的区别
  继承只能继承一次,并且不能多个继承只能多级继承
  实现可以有一个或多个接口中间用“逗号”隔开
3.多态有什么好处
   提高程序的可拓展性,缺点是不能访问子类特有的方法
4什么时候需要用到向上转型?什么时候需要用到向下转型
   在父类引用子类对象时需要用向上转型
   父类向子类对象强转的过程,要注意转型时所匹配的成员,不匹配编译报错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马