IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 面向对象核心技术 -> 正文阅读

[Java知识库]面向对象核心技术

面向对象核心技术

一、抽象类与接口

1、抽象类

抽象类简单来说就是表征一个对象是什么一种属性。实例化即建立一个类的对象,而所谓抽象是指它之下没有可以实例化的对象。

public abstract class ClassName {
    public void method()
    {
        System.out.println("test");
    }
    public static void main(String[] args)
    {
        ClassName a=new ClassName();  //错误写法
        a.method();
    }
}

报错信息:
j a v a : c o m . t e s t . C l a s s N a m e 是 抽 象 的 ; 无 法 实 例 化 java: com.test.ClassName是抽象的; 无法实例化 java:com.test.ClassName;

public abstract class ClassName {
    public static void method()
    {
        System.out.println("test");
    }
    public static void main(String[] args)
    {
        method();
    }
}

运行结果:
t e s t test test
抽象类不能实例化,静态方法不需要实例化,将Java的这两个特性相结合有助于理解本段代码。

2、抽象方法

public abstract class ClassName {
    public abstract void method();
    public static void main(String[] args){}
}

只有声明没有实例的方法称为抽象方法,抽象方法只能在抽象类中使用,不然会产生以下错误。

报错信息:
j a v a : c o m . t e s t . C l a s s N a m e 不 是 抽 象 的 , 并 且 未 覆 盖 c o m . t e s t . C l a s s N a m e 中 的 抽 象 方 法 m e t h o d ( ) java: com.test.ClassName不是抽象的, 并且未覆盖com.test.ClassName中的抽象方法method() java:com.test.ClassName,com.test.ClassNamemethod()

3、继承抽象类

public abstract class ClassName {
    public void method()
    {
        System.out.println("common method");
    }
    public abstract void method_abstract();
}

public class ClassNames extends ClassName{
    @Override
    public void method_abstract()
    {
        System.out.println("abstract method");
    }
    public static void main(String[] args)
    {

    }
}

语法特点:子类重写父类的抽象方法。

4、接口

接口都没有方法实现,并且抽象程度更高。

public interface ClassName {
    public void method();
    public static void main(String[] args){}
}

public class ClassNames implements ClassName{
    @Override
    public void method()
    {
        System.out.println("method");
    }
    public static void main(String[] args){}
}

二、异常处理

1、异常

分类特点可否忽略实例
检查性异常程序员无法预见其是否出现用户输入了非法数据;要打开的文件不存在
运行时异常可能被程序员避免的异常
错误脱离程序员控制的问题内存溢出

此外网络通信时连接中断也是常见的异常。

2、异常分类

异常(Throwable)包括Error和Exception.

Exception下的异常分为两大类,分别是Runtime异常和非Runtime异常。

Runtime异常:数组下标越界异常,空指针异常,对象类型强制转换异常,以及数组存储异常。

非Runtime异常(检查异常):IOException,SqlException

3、try-catch格式

public class temp {
    public static void main(String[] args)
    {
        try//用于监听异常
        {
            int[] a=new int[3];
            for(int i=0;i<4;i++)
            {
                System.out.println(a[i]);
            }
        }
        catch(IndexOutOfBoundsException a)//
        {
            System.out.println("IndexOutOfBoundsException");
        }
    }
}

运行结果:
0 , 0 , 0 , I n d e x O u t O f B o u n d s E x c e p t i o n 0, 0, 0, IndexOutOfBoundsException 0,0,0,IndexOutOfBoundsException

4、try-catch-finally格式

在3中可增添这样一行代码:

finally {
    System.out.println("finish printIn process");
}

运行结果增加finish printIn process,除此之外没有其他变化。

5、throws/throw异常

public class temp {
    public static void main(String[] args)
    {
        try//用于监听异常
        {
            int[] a=new int[3];
            for(int i=0;i<4;i++)
            {
                if(i==3)
                {
                    throw new IndexOutOfBoundsException("数组越界异常");
                }
                System.out.println(a[i]);
            }
        }
        catch(IndexOutOfBoundsException a)//
        {
            System.out.println("IndexOutOfBoundsException");
        }
    }
}

6、自定义异常

class MyException extends Exception {  // 自定义的类
    MyException(String s) {
        super(s);
    }
}

三、实例

1、创建 Shape(图形)类,该类中有一个计算面积的方法。圆形和矩形都继承自图形类,输出圆形和矩形的面积。

public abstract class Shape {
    double a=10.0;  //圆半径或正方形边长
    public abstract void size();
}

public class Circle extends Shape{
    @Override
    public void size() {
        System.out.println("S="+Math.PI*a*a);
    }
    public static void main(String[] args)
    {
        Shape m=new Circle();
        m.size();
    }
}

public class Square extends Shape{
    @Override
    public void size() {
        System.out.println("S="+a*a);
    }
    public static void main(String[] args)
    {
        Shape n=new Square();
        n.size();
    }
}

2、创建工厂类,工厂类中有一个抽象的生产方法,创建汽车厂和鞋厂类,重写工厂类中的抽象生产方法,输出汽车厂生产的是汽车,鞋厂生产的是鞋。

public abstract class Factory {
    public abstract void process();
}

public class Car extends Factory{
    @Override
    public void process() {
        System.out.println("汽车厂生产的是汽车");
    }
    public static void main(String[] args)
    {
        Factory m=new Car();
        m.process();
    }
}


public class Shoes extends Factory{
    @Override
    public void process() {
        System.out.println("鞋厂生产的是鞋");
    }
    public static void main(String[] args)
    {
        Factory m=new Shoes();
        m.process();
    }
}

参考资料:

1、https://github.com/datawhalechina/team-learning-program/blob/master/Java/7.%E6%8A%BD%E8%B1%A1%E7%B1%BB%E4%B8%8E%E6%8E%A5%E5%8F%A3.md

2、https://github.com/datawhalechina/team-learning-program/blob/master/Java/8.%20%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86.md

3、https://github.com/datawhalechina/team-learning-program/blob/master/Java/%E7%BB%83%E4%B9%A0%E9%A2%98%EF%BC%9A%E6%8A%BD%E8%B1%A1%E7%B1%BB%E4%B8%8E%E6%8E%A5%E5%8F%A3.md(实例出处)

4、搜索引擎及自己探索。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 00:03:28  更:2021-07-24 00:04:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 8:56:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码