教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 java基础教程-Java面向对象

java基础教程-Java面向对象

发布时间:2017-12-03   编辑:jiaochengji.com
教程集为您提供java基础教程-Java面向对象等资源,欢迎您收藏本站,我们将为您提供最新的java基础教程-Java面向对象资源
本文章来介绍一下关于java中的面向对象的编程实现,有需要了解的朋友可以参考一下。

01.面向对象(多态概念)

定义:某一类事物的多种表现形式。可以理解为事物存在的多种体现形态。

02.面向对象(多态-扩展性)

多态的体现:父类的引用指向了自己的子类对象。父类的引用也可以接受自己的子类对象。如:Father father=new Sun();
多态的好处:多态的出现大大的提高了程序的扩展性。
多态的前提:必须是类与类之间的关系,要么继承,要么实现。通常还有一个前提,存在覆盖。
多态的弊端:提高了扩展性,但只能使用父类的引用访问父类中的成员。

03.面向对象(多态-转型)

如果想要操作子类特有的方法,怎么办?强制将父类的引用转成子类类型。
如:
Father father=new Son();
Son son=(Son)father;
但不能这么做:(将父类对象转成子类类型)
Father father=new Father();
Son son=(Son)father;
我们能转换的是父类引用指向了自己的子类对象时,该引用可以被提升,也可以被强制转换。多态自始自终都是子类对象在做着变化。
判断一个实例是不是某个类型时:a instanceof Son;a是实例名,Son是类名

04.面向对象(多态-示例)

05.面向对象(多态中成员的特点)

在多态中成员函数(非静态)的特点:
在编译时期:参阅引用型变量所属的类是否有调用的方法,如果有,编译通过,如果没有,编译失败。
在运行时期,参阅对象所属的类是否有调用方法。
简单总结:成员函数在多态调用时编译看左边,运行看右边。

涉及面试的环节:

在多态中成员变量和静态函数的特点:
无论编译和运行,都参考左边(引用变量所属的类)

06.面向对象(多态的主板示例)

pci接口
主板类实现pci接口
主板有UsePci方法,参数是接口类型,实际传入的是网卡类实例。
网卡类实现pci接口

07.面向对象(多态的扩展示例)

需求:catch)

异常处理:java提供了特有的语句进行处理;
try
{
 需要检测的代码;
}
catch(异常类 变量)
{
 处理异常的代码;
}
finally
{
 一定会执行的语句;
}
对捕获到的异常对象进行常见方法操作:String getMessage();
e.printStackTrce();其实jvm默认的异常处理机制,就是调用这个方法。

07.面向对象(异常声明throws)

08.面向对象(多异常处理)

多异常处理:
1.声明异常时,建议声明更为具体的异常,这样处理可以更具体。
2.对方声明几个异常,就应有几个catch块,如果多个catch块的异常出现继承关系,父类异常catch块放在最下面。
建立在进行catch处理时,catch中一定要定义具体处理方式,不要简单定义一句e.printStackTrace();也不要简单的就书写一条输出语句。

09.面向对象(自定义异常)

因为项目中会出现特有的问题,而这些问题并未被java所描述并封装对象,所以这些特有的问题可以按照java的对问题封装的思想,将特有的问题,进行自定义的异常封装。

需求:在本程序中,对于除数是负数,也无法运算,那么就需要对这个问题进行自定义的描述。

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy8302')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy8302>

class ZiDingYiException extends Exception
{
 ZiDingYiException(String msg)
 {
  super(msg);
 }
}
class Test
{
 int div(int a,int b)
 {
  if(b<0)
  {
   throw new ZiDingYiException();
  }
 }
}

当在函数内部出现了throw抛出的异常,那么就必须要给对应的处理动作,要么在函数内部try-catch处理,要么在函数声明上让调用者处理。
一般情况下,函数内部出现异常,函数上需要声明。

如何自定义异常信息呢?
因为父类中已经把异常信息的操作都完成了,所以子类只要在构造时,将异常信息传递给父类通过super语句,那么就可以直接通过getMessage方法获取自定义的异常信息。
自定义异常必须是自定义类继承Execption。
为什么要继承Exception?
1.异常体系有一个特点,因为异常类和异常对象都需要被抛出,他们都具备可抛性,这个可抛性是throwable这个体系独有的特点,只有这个体系的成员才可以被throw和throws抛出。

10.面向对象(throw和throws的区别)

(1)throws使用在函数上,throw使用在函数内。
(2)throws后面跟的是异常类,而throw后面跟的是异常对象。

11.面向对象(RuntimeException)

Exception中有一个特殊的子类异常RuntimeException,运行时异常,如果在函数内部抛出异常,函数上可以不用声明,编译一样通过,如果在函数上声明了对象,调用者可以不用进行异常处理,编译一样通过。

注意:之所以不用在函数上声明,是因为不需要让调用者处理,当该异常发生,希望程序停止,因为程序运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修正。

自定义异常时,如果该异常的发生无法再继续进行运算的话,就让自定义异常继承RuntimeException。

对于异常分两种:
1.编译时被检测到的异常
2.编译时不能被检测的异常(运行时异常,RuntimeException及其子类)

12.面向对象(异常练习)

需求:
毕老师用电脑上课
正常情况

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy5939')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy5939>class computer
{
 public void run()
 {
  System.out.println("电脑运行");
 }
 public void reset()
 {
  System.out.println("电脑重启");
 }
}
class Teacher
{
 private String name;
 private Computer cmpt;
 Teacher(String name)
 {
  this.name=name;
 }
 public void prelect()
 {
  cmpt.run();
  System.out.println("讲课");
 }
}
class test
{
 public static void main(String[] args)
 {
 
 }
}

您可能感兴趣的文章:
学习J2SE过程中的30个基本概念
Java学习路径(三)过程篇
Java入门需掌握的30个基本概念
教你如何成为一名Java初级程序员
Java学习路径(二)书籍篇
java和php做物联网哪个好
(原)JAVA入门书籍读后感
php可以和java一起开发吗
php比java简单吗
php和java哪个好?

[关闭]
~ ~