多态 抽象类 接口

来源:互联网 发布:双十一淘宝购物技巧 编辑:程序博客网 时间:2024/05/20 00:15

多态

 多态包括两种  方法的重载和重写  对象的向上和向下转型

一、方法的重载和重写

重载与重写的区别:

方法重载指的是,在同一个类中,允许多个方法名相同,参数列表不同(类型,个数,顺序)即可,与访问控制符、返回值、异常无关

 

方法的重写指的是,在继承中如果父类中某个方法不能满足子类的需求,子类可以重写父类中的该方法。重写时,方法名、返回值类型、参数列表都必须和父类中该方法一样,子类中的访问控制符不能比父类更严格。如果父类中的该方法使用private修饰,在子类中就不叫重写(因为子类根本无法访问该方法)。

 

重载重写对比

 

位置

方法名

参数列表

返回值

访问控制符

重载

同一类中

一样

不一样

无关

无关

重写

父类和子类

一样

一样

一样

子类不能比父类严格


二、对象的向上和向下转型

1、向上转型之后只能调用父类里的有的方法;

2、向上转型后,如果调用的方法在子类中重写,那么调用的就是重写后的方法;

3、向下转型之前要经历向上转型;

规律:多态时,能调用哪些方法看前面,调用方法的效果看后边(指的是构造方法), 属性的值看前边。



抽象类

用abstract修饰的类是抽象类。抽象方法不能使用private修饰


1、一个类如果有抽象方法,那么这个类一定是抽象类;

2、抽象类中不一定有抽象方法;

3、抽象类可以写构造方法;

4、抽象类不能实例化。

5、抽象方法只需要声明不需要实现

6、抽象类不能创建对象,无法使用new关键字调用抽象方法的构造方法创建对象。即使抽象类中包含构造方法该类也不能创建对象。

7、子类继承抽象类时,必须要重写抽象类中的所有抽象方法(如果子类也是抽象类可以不重写)


接口  ------更彻底的抽象类

接口的特点:

1、接口中所有方法都是抽象方法;

2、接口是单继承,但一个类可以实现多个接口(实现了多继承);

3、接口不能实例化、接口没有构造方法。

4、接口中的方法全部都是抽象方法,常量全部都是静态常量。

5、当一个类实现某个接口时,它必须实现该类中的所有的抽象方法,除非这个类定义为抽象类。

接口的作用:规范代码。

接口继承接口用extends,可以多继承。


包装类

一、Java中八大基本类型的基本数据初始值都为0;而包装类的初始值为null.


 二、下面是wo包装类常用的转换

1、int 类型转换为字符串

int a=0;

String s=a+"";   0的字符串

2、字符串转成int 类型

String i="10";

int i2=Integer.parseInt(i);  

3、字符串转成Boolean

String b="true";

Boolean b1=Bolean.paresBoolean(b);

三、这是我找的一个面试题,可以研究下:

有这个一个九位数,它由123456789组成,每个数字出现仅切出一次,数字的前一位能被1整除,前2位能被2整除......前九位能被9整除,求这个数字。



异常

重点掌握:

try,catch,finally,throws,throw五个关键字

try{

可能发生异常的代码块;

}catch(Exception e){

异常处理代码块;

}finally{

必须执行的代码块;

}

下面是我做的一个案例:

 

捕获多个异常





注意:使用多重catch语句时,异常子类一定要位于异常父类之前


throws 处理异常(抛出异常)

 

throw 抛出自定义异常

 

Finalfinallyfinalize的区别

Final修饰类:类不可被继承

Final修饰变量:变量值不可变

Final修饰方法:方法不可被重写

Finally用于捕获异常  try catch finally语句

Finalize用于处理垃圾回收


多线程

创建多线程

★继承Thread类,重写run方法

◆语法:

class Test extends Thread{//继承Thread

public void run() {//重写run方法

//方法体

}

}

 

★实现Runnable接口,实现run方法

◆语法:

class Test implements Runnable{//实现Runnabel接口

public void run() {//实现run方法

//方法体

}

}

创建线程的方法对比:

 

优点

缺点

继承Thread

简单

无法再继承其他类

无法实现资源共享

实现Runnable接口

可以继承其他类

可以实现资源共享

复杂

 

在开发张大多数情况下选择使用实现Runnable接口的方式来创建线程。


集合

 list set map ArrayList



set和list都是储存数据,set存放的数据不重复,是无序的;list可以吧存放重复数据,是有序的;map以键值对的形式存放数据。

ArrayList和LinkedList的区别

ArrayList存放的数据是有序的(顺序排放)

linkedList的数据是指向排放的,常用于数据的插入,删除,修改。

这是他们内存的一个分析:





原创粉丝点击