java-面向对象-多肽-接口-抽象类

1:多态是什么,前提是什么?

一个事物在不同情况下的状态

首先必须要有继承

必须要对父类的方法进行重写

必须要有父类引用指向子对象

2:多态中成员访问的特点?

成员变量

编译看左边(父类),运行看左边(父类)。

成员方法

编译看左边(父类),运行看右边(子类)。

静态方法

编译看左边(父类),运行看左边(父类)。

只有非静态的成员方法,编译看左边,运行看右边

3:多态的好处及弊端?

多态的好处

提高了代码的维护性(继承保证)

提高了代码的扩展性(由多态保证)

可以当作形式参数,可以接收任意子类对象

多态的弊端

不能使用子类的特有属性和行为。

4:什么是向上转型?什么是向下转型?

向上或者向下转型 就要说到继承

比如有2个类 A B

B继承A

先 B b = new B();

这个时候 A a = b; 这种用法就是向上转型 使用父类的引用 引用子类对象 向上转型是自动的不需要其他操作

然后在上边的基础上 b = (B)a 这个就是向下转型 当用父类引用 引用子类对象 现在想不使用父类的引用 而使用子类的引用 就是向下转型 向下转型必须强制转型 必须确定对象确实是子类对象 如果是父类对象那就会报错

6:抽象类概述及其特点?

抽象类概述

抽象就是看不懂的

抽象类特点

抽象类和抽象方法必须用abstract关键字修饰

abstract class 类名 {}

public abstract void eat();

抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口

抽象类不能实例化那么,抽象类如何实例化呢?

按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。

抽象类的子类

要么是抽象类

要么重写抽象类中的所有抽象方法

abstract不能和哪些关键字共存

static:

abstract
 class  A {

public abtract
static void method();

}

static修饰后可以直接类名调用方法,但是抽象方法没有实现体,调用无意义;

final:

final修饰的类不能被继承,修饰的方法不能被重写,修饰的成员变量只能为常量;但是继承的子类要重写这个抽象方法,所以会出现矛盾;

private:

抽象方法是为了让子类重写并给定实现体,但是private修饰的方法只能本类访问,所以矛盾。

10:接口的概述及其特点?

接口概述

从狭义的角度讲就是指java中的interface

从广义的角度讲对外提供规则的都是接口

接口特点

接口用关键字interface表示

interface 接口名 {}

类实现接口用implements表示

class 类名 implements 接口名 {}

接口不能实例化

那么,接口如何实例化呢?

按照多态的方式来实例化。

接口的子类

可以是抽象类。但是意义不大。

可以是具体类。要重写接口中的所有抽象方法。(推荐方案)

13:抽象类和接口的区别?

成员区别

抽象类:

成员变量:可以变量,也可以常量

构造方法:有

成员方法:可以抽象,也可以非抽象

接口:

成员变量:只可以常量

成员方法:只可以抽象

关系区别

类与类

继承,单继承

类与接口

实现,单实现,多实现

接口与接口

继承,单继承,多继承

设计理念区别

抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。

接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。

你可能感兴趣的:(java学习)