码迷,mamicode.com
首页 > 编程语言 > 详细

Java面向对象04

时间:2021-06-02 14:59:24      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:初始   rtu   rac   tac   sde   over   link   代码   time   

Java 面向对象04

接口

  • 普通类:只有具体实现

  • 抽象类:具体实现的规范[抽象方法]都有!

  • 接口:只有规范!自己无法写方法专业的约束!约束和实现分离:面向接口编程

  • 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是...则必须能...”的思想。

  • 接口的本质是七月,就像我们的法律一样。制定好后大家都遵守。

  • OO[面向对象]的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计 模式都只针对具备了抽象能力的语言(比如C++、Java、C#等),就是因为设计模式所研究的。

声明接口的关键字是 interface

代码示例:

接口:

//抽象类 extends
//类 可以实现接口 implements 接口
//实现了接口的类,必须重写接口中的方法
//利用接口实现多继承
public class UserServiceImpl implements UserService,TimeService{
    @Override
    public void timer() {
    }

    @Override
    public void add(String name) {
    }

    @Override
    public void delete(String name) {
    }

    @Override
    public void update(String name) {
    }

    @Override
    public void query(String name) {
    }
}

UserService

//interface 关键字
public interface UserService {

    //常量
    int Age = 99;

    //接口的所有定义都是抽象的public
    void add(String name);
    void delete(String name);
    void update(String name);
    void query(String name);
}

TimeService

public interface TimeService  {
    void timer();
}

接口的作用:

  1. 约束
  2. 定义一些方法,让不同的人实现~
  3. public abstract
  4. public static final
  5. 接口不能被示例化,接口中没有构造方法
  6. implements可以实现多个接口

拓展:面向对象的23种模式

内部类

  • 内部类就是在一个类的内部再定义一个类,不如在A中定义一个B类,那么B类相对于A类是其的内部类,而A类相对B类来说就是外部类了

代码:

mian()

import oop.Demo10.Outer;

public class Application {
    public static void main(String[] args) {
        //new
        Outer outer = new Outer();

        //通过外部类来实例化内部类
        Outer.Inner inner = outer.new Inner();
        inner.getId();//若为静态内部类则无法获得ID,因为Static关键字先执行

    }
}
  1. 成员内部类
public class Outer {

    private int ID = 10;
    public void out(){
        System.out.println("outer!");
    }
    public class Inner{
        public void in(){
            System.out.println("Inner!");
        }
        //获得外部类的私有属性
        public void getId(){
            System.out.println(ID);
        }
    }
}
  1. 静态内部类
public class Outer {

    private int ID = 10;
    public void out(){
        System.out.println("outer!");
    }
    public static class Inner{
        public void in(){
            System.out.println("Inner!");
        }
    }
}
  1. 局部内部类
public class Outer {
    //局部内部类
    public void method(){
        class Inner{
            public void in(){
                
            }
        }
    }
}
  1. 匿名内部类
public class Outer {
    public static void main(String[] args) {
        //没有名字初始化,不用将示例保存在变量中
        new Apple().eat();
        new UserService(){
            @Override
            public void Hello() {
            }
        };
    }
}
class  Apple{
    public void eat(){
        System.out.println("eat!");
    }
}

interface UserService{
    void Hello();
}
public class Outer {
public static void main(String[] args) {
    }
}

//一个Java类中可以有多个class类,但只能有一个public class
class A{
    public static void main(String[] args) {
    }
}

异常

  • 软件程序在运行过程中,非常有可能遇到刚刚提到的这些异常问题,我们叫做异常,英文:Exception 意味例外.

  • 异常值程序运行过程中出现的不期而至的构造状况,如找不到文件、网络连接失败、非法参数等。

  • 异常发生在程序运行期间,它影响了正常的程序执行流程。

示例代码:

public class Demo01 {
    public static void main(String[] args){
        new Demo01().a();
    }

    public void a(){
        b();
    }
    public void b(){
        a();
    }
}//StackOverflowError
public class Demo01 {
    public static void main(String[] args){
        System.out.println(11/0);//0做除数
    }
}
//ArithmeticException

简单分类

  • 要理解Java异常处理是如何工作的,需要掌握以下三种类型的异常:

    1. 检查性异常:最具有代表性的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
    2. 运行时异常:运行时异常时可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
    3. 错误ERROR:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如当栈溢出时,一个错误就发生了,他们在编译时也检查不到。
  • 异常处理框架

异常体系结构

  • Java 把异常当作对象来处理,并定义一个基类 java.lang.Throwable 作为所有异常的超类。
  • 在 Java API 中已经定义了许多异常类,这些异常类分为两大类,错误 ERROR 和 异常 Exception。
技术图片

Error

  • Error 类对象有 Java 虚拟机生成并抛出,大多数错误与代码编写者执行的操作无关。
  • Java 虚拟机运行错误 (Virtual MachineError),当JVM不在有执行操作所需要的内存资源时,将出现 OutOfMemoryError。这些异常发生时 Java 虚拟机(JVM)一般会选择线程终止;
  • 还有发生在虚拟机试图执行应用时,如类定义错误(NoClassDefFoundError)、链接错误(LinkageError)。这些错误时不可查的,因为他们在应用程序的控制和处理能力之外,而且绝大多数时程序运行时不允许出现的状况。

Exception

  • 在 Exception 分支中有一个重要的子类 RunTimeException(运行时异常)

    • ArrayIndexOutOfBoundsException (数组下标越界)
    • NullPointerException (空指针异常)
    • ArithmeticException (算数异常)
    • MissingResourseException (丢失资源)
    • ClassNotFoundException (找不到类)
  • 等异常,这些异常时不检查异常,出现中可以学则捕获处理,也可以不处理

  • 这些异常一般由程序逻辑错误引起的,程序因该从逻辑角度尽可能避免。

Error 和 Exception 的区别:

  • Error 通常时灾难性的致命错误,是程序无法控制和处理的,当出现这些异常时,Java虚拟机 (JVM) 一般会选择终止线程;Exception 通常情况下可以被程序处理的,并且在程序中因该尽可能的去处理这些异常。

Java面向对象04

标签:初始   rtu   rac   tac   sde   over   link   代码   time   

原文地址:https://www.cnblogs.com/seveN1foR/p/14823751.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!