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(day09)多态、异常、抽象类 -> 正文阅读

[Java知识库]Java(day09)多态、异常、抽象类

多态

概念:多态是指的是面是对象的多种形态

多态的前提:继承+重写

父类引用指向子类对象,及创建出来的子类对象的地址值,交给父类类型的引用类型变量来保存

编译看左边,运行看右边

子类重写方法,才能执行多态

package cn.tedu.oop3;
/*多态的入门案例*/
public class TestDemo {
    public static void main(String[] args) {

        Animal a2=new Cat();
        Animal a3=new Dog();
        a2.eat();
        a3.eat();
    }
}
class Animal{
    public void eat(){
        System.out.println("小动物Animal吃啥都行");
    }
}
class Cat extends Animal{
    public void eat(){
        System.out.println("🐱爱吃🐟");

    }
    public void jump(){
        System.out.println("🐱跳的快");
    }
}
class Dog extends Animal{
    public void eat(){
        System.out.println("🐕爱吃🥩");
    }
    public void run(){
        System.out.println("🐕跑的快");
    }
}
执行结果:
🐱爱吃🐟
🐕爱吃🥩

注意:多态主要针对方法,所以多态中,成员变量使用的是父类,方法使用的是子类

package cn.tedu.oop;

import javax.sound.midi.Soundbank;

//本类用于测试多态成员的使用情况
public class TestDemo2 {
    public static void main(String[] args) {
        Animal2 a=new Dog2();
        System.out.println(a.sum);
        a.eat();
    }
}
class Animal2{
    int sum=10;
    public void eat(){
        System.out.println("吃啥都行");
    }
    public static void play(){
        System.out.println("玩啥都行");
    }
}
class Dog2 extends Animal2{
    int sum=20;
    public void eat(){
        System.out.println("狗吃肉包子");
    }
}
运行结果:
10
狗吃肉包子

异常捕获

try{可能会抛出异常的代码}

catch(预先设想的异常名){捕获到了异常,进行处理的解决方案}

package cn.tedu.oop;

import java.util.Scanner;

//异常的入门案例
public class ExceptionDemo {
    public static void main(String[] args) {
        //Method1();//调用暴露异常的方法
        Method2();//调用解决异常的方案1--捕获异常--自己解决
        //Method3();//调用解决异常的方案2--向上抛出--别人解决
    }
    private static void Method3() {

    }
    private static void Method2() {
        try {
            System.out.print("请输入一个值:");
            int a=new Scanner(System.in).nextInt();
            System.out.print("请输入一个值:");
            int b=new Scanner(System.in).nextInt();
            System.out.println((a/b));
        }catch (ArithmeticException e){
            System.out.println("除数不能为0");
        }
    }
    private static void Method1() {
        //10/0  ArithmeticException 算数异常,除数不能为0
        //10/3.4 InputMismatchException 输入不匹配异常
    }
}
运行结果:
请输入一个值:10
请输入一个值:0
除数不能为0

?万能的处理:Exception

package cn.tedu.oop;

import java.util.InputMismatchException;
import java.util.Scanner;

//异常的入门案例
public class ExceptionDemo {
    public static void main(String[] args) {
        //Method1();//调用暴露异常的方法
        Method2();//调用解决异常的方案1--捕获异常--自己解决
        //Method3();//调用解决异常的方案2--向上抛出--别人解决
    }
    private static void Method3() {

    }
    private static void Method2() {
        try {
            System.out.print("请输入一个值:");
            int a=new Scanner(System.in).nextInt();
            System.out.print("请输入一个值:");
            int b=new Scanner(System.in).nextInt();
            System.out.println((a/b));
        } catch (Exception e){                        //万能
            System.out.println("你输入的不对");
        }
    }
    private static void Method1() {
        
    }
}
执行结果:
请输入一个值:10
请输入一个值:0
你输入的不对

异常抛出

格式:在方法的小括号和大括号之间,写:throws 异常类型

如果有多个类型,用逗号分开

package cn.tedu.oop;

import java.util.InputMismatchException;
import java.util.Scanner;

//异常的入门案例
public class ExceptionDemo {
    public static void main(String[] args) {
        f();
    }
    private static void f() {
        try {
            Method3();
        }catch (Exception e){
            System.out.println("你的输入有误");
        }
    }
    private static void Method3() throws Exception {
        System.out.print("请输入一个值:");
        int a=new Scanner(System.in).nextInt();
        System.out.print("请输入一个值:");
        int b=new Scanner(System.in).nextInt();
        System.out.println((a/b));
    }
   
}
运行结果:
请输入一个值:20.2
你的输入有误

抽象abstract

1.被abstract修饰的方法是抽象方法,抽象方法没有方法体

2.被abstract修饰的类是抽象类,如果一个类包含了抽象方法,那么他必须是抽象类

3.当一个子类继承了抽象父类以后,有两种解决方案:

方案一:变成抽象子类

方案二:变成普通子类,子类需要实现父类中所有的抽象方法

4.抽象类不可以被创建对象,需要用多态创建对象

抽象类有构造方法,抽象类的构造方法不是为了自己使用,而是为了子类创建对象时使用super();

为什么要有抽象类?

因为不想让外界创建本类对象

package cn.tedu.oop2;

import org.jcp.xml.dsig.internal.dom.DOMUtils;

/*用于抽象类的成员测试*/
public class AbstractDemo3 {
    public static void main(String[] args) {
        Fruit f=new Bananer();
        f.eat();
        f.run();

    }
}
abstract class Fruit{
    int a;
    final int NAME=10;
    public void eat(){
        System.out.println("吃啥都行");
    }
    public abstract void run();
    
}
class Bananer extends Fruit{
    public void run(){
        System.out.println("香蕉很甜");
    }
}
运行结果:
吃啥都行
香蕉很甜

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-11 15:35:19  更:2021-12-11 15:35:50 
 
开发: 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年11日历 -2024/11/24 5:20:00-

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