JAVA基础课总结八

原创 2015年11月18日 23:33:32


一、多态

   A:对象在不同时刻表现出来的不同的状态

 

   B:多态前提

 a:要有继承关系。

b:要有方法重写。

c:要有父类引用指向子类对象。

   在多态的时候,父类的引用除了子类重写的方法是调用的子类的之外,其他的都是调用的父类的,如果父类没有就报错

 

C:多态中的成员访问特点

a成员变量

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

 

b成员方法

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

 

c静态方法

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

(静态和类相关,算不上重写,所以,访问还是左边的)

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

 

D:多态中向上转型和向下转型

Person p = new SuperMan();向上转型 ,多态本身就是向上转型

SuperMan sm = (SuperMan)p;向下转型

 

注意:1、在向下转型过程中有可能会出现ClassCastException 类型转换异常

2、以后必须这样做:父类的引用指向的哪个子类对象 就可以强转成哪个子类对象 否则报错,即存在instanceOf关系

3、向下转型必须建立在向上转型基础上,即存在多态的情况,即有属于的关系

E:多态的好处和弊端

a:多态的好处

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

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

    多态的使用在当做参数传递的时候最能体现扩展性

b:多态的弊端

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

 

二、抽象类

 

A: 有抽象方法的类就叫做抽象类

B:抽象类特点

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

 abstract class 类名 {}

 public abstract void eat();

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

 c:既然抽象类不能实例化 那怎么用抽象类里面的内容呢?

子类创建子类的对象 就能试用抽象类里面的内容

     d:抽象类的子类

 要么是抽象类

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

         作用:强制要求子类重写抽象方法

 

注:构造方法是用于创造对象的,但是构造方法不能被继承,子类通过super访问父类的构造方法

 

C:抽象类的成员特点

a:成员变量:既可以是变量,也可以是常量。abstract不能修饰成员变量

b:构造方法:有。用于子类访问父类数据的初始化。

 c:成员方法:既可以是抽象的,也可以是非抽象的。

D:抽象类的成员方法特性:

抽象方法 :强制要求子类做的事情。

非抽象方法 :子类继承的事情,提高代码复用性。

 

三、接口

A:从狭义的角度讲就是指java中的interface,所有的方法都是抽象方法

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

B:接口特点

 a:接口用关键字interface表示

 interface 接口名 {}

 b:类实现接口用implements表示

 class 类名 implements 接口名 {}

 c:接口不能实例化

    实现类实例化

 d:接口的子类

 a:可以是抽象类。不用重写父类所有方法

 b:可以是具体类。要重写接口中的所有抽象方法。

     e:接口的所有方法都是抽象的

C:接口的成员特点

 成员变量:只能是常量,并且是静态的并公共的。

 默认修饰符:public static final

 建议:自己手动给出。

 构造方法:接口没有构造方法。

 成员方法:只能是抽象方法。

              所以子类实现接口的时候 必须都重写他的方法

 默认修饰符:public abstract

 建议:自己手动给出。

 

D:类与类,类与接口,接口与接口的关系

 a:类与类:

 继承关系,只能单继承,可以多层继承。

 b:类与接口:

 实现关系,可以单实现,也可以多实现。

 并且还可以在继承一个类的同时实现多个接口。

 c:接口与接口:

 继承关系,可以单继承,也可以多继承。

E:抽象类和接口的区别

 a:成员区别

 抽象类:

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

 构造方法:有

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

 接口:

 成员变量:只可以常量

 成员方法:只可以抽象

 b:关系区别

 类与类

 继承,单继承

 类与接口

 实现,单实现,多实现

 接口与接口

 继承,单继承,多继承

 c:设计理念区别

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

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

 

F:接口的作用:

接口是对外暴露的规范

接口是程序的功能的扩展

 接口的出现降低了耦合性

JAVA基础课总结九

本节重点介绍了内部类,是本人根据学习资料总结所得! 一、包                                                                     ...
  • lliuzhiyongg
  • lliuzhiyongg
  • 2015年11月18日 23:34
  • 161

JAVA 基础课总结七

 一、代码块     在Java中,使用{}括起来的代码被称为代码块。 A:代码块分类  根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块 B:常见代码块的...
  • lliuzhiyongg
  • lliuzhiyongg
  • 2015年11月16日 23:53
  • 232

JAVA基础课总结三

 一、流程控制语句:可以控制程序的执行流程。    流程控制语句的分类 顺序结构;代码按照顺序从上往下执行。         选择结构:根据以下选择或者判断做出不同的执行。 a:选择...
  • lliuzhiyongg
  • lliuzhiyongg
  • 2015年11月16日 23:49
  • 161

JAVA基础课总结五

 一、二维数组   A:二维数组格式 int[][] arr = new int[3][2];     int[][] arr = new int[3][];    int[][] a...
  • lliuzhiyongg
  • lliuzhiyongg
  • 2015年11月16日 23:51
  • 72

JAVA基础课总结六

一、构造方法 (1)作用: 给对象的数据(属性)进行初始化 (2)构造方法格式特点   a:方法名与类名相同(大小也要与类名一致) b:没有返回值类型,连void都没有  c:没有具体的返回值retu...
  • lliuzhiyongg
  • lliuzhiyongg
  • 2015年11月16日 23:52
  • 134

JAVA基础课总结二

一、原、反、补码 计算机存储运算为补码,输出为原码,如果数据超出8byte则,舍弃超出   注意:任何数据类型用“+”和字符串连接会产生新的字符串,如 (“hello”+‘a’+2)-----hell...
  • lliuzhiyongg
  • lliuzhiyongg
  • 2015年11月16日 23:48
  • 145

JAVA基础课总结四

 控制跳转语句 break和continue (1)有些时候,我们需要对循环进行一些控制终止,这个时候,就出现了两个关键字: break和continue (2)注意事项: A:它们都...
  • lliuzhiyongg
  • lliuzhiyongg
  • 2015年11月16日 23:50
  • 123

MyBatis学习总结(8)——Mybatis3.x与Spring4.x整合

一、搭建开发环境 1.1、使用Maven创建Web项目   执行如下命令: mvn archetype:create -DgroupId=me.gacl -DartifactId=spring4...
  • u012562943
  • u012562943
  • 2015年12月25日 14:49
  • 1687

八皇后问题java代码

八皇后问题-回溯法
  • zpcandzhj
  • zpcandzhj
  • 2015年05月05日 19:46
  • 1792

java利用递归解决八皇后问题

问题简介: 要求在一个8*8的棋盘上放置8个皇后,使任意两个皇后都不同行不同列且不在同一条斜对角线上。采用递归和回溯的思想解决这一问题是较为直观的。一开始,棋盘上的任意格子都可落子,因此可任意选择第...
  • yange1025
  • yange1025
  • 2016年04月30日 00:06
  • 866
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA基础课总结八
举报原因:
原因补充:

(最多只允许输入30个字)