小白学Java第四天


一、面向对象什么?

面向对象编程简称OOP
本质就是:以类的方式组织代码,以对象的组织封装数据。

三大特性:
封装:属性私有 get/set
继承
多态

类与对象的关系
对象是具体的事物,类是抽象的,是对对象的抽象,类是对象的模板

1. 创建与初始化对象

使用new关键字创建对象
使用new关键字创建对象的时候,除了分配内存空间外,还会给创建好的对象进行默认的初始化以及对类中构造器调用
构造器:
类中的构造器也称构造方法,是在进行常见对象的时候必须调用的有一下特点:
必须和类的名字相同
必须没有返回类型,也不能写void

public class Dome01 {
    //构造方法
    public Dome01() {
    }
}

2. 封装

数据隐藏,禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问;

Student.class

public class Student {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Application.class

public class Application {
    public static void main(String[] args) {
        Student student = new Student();
        student.setName("张三");
        System.out.println(student.getName());

    }
}

封装一般针对属性

3. 继承

本质是对某一批类的抽象
关键字 extends
Java中类只有单继承,没有多继承!
继承是类与类之间的一种关系。一个为子类(派生类),一个为父类(基类) 子类继承分类,使用关键字extends

student.class

public class Student extends Person{
    public void say(String name) {
        System.out.println("学生类"+name+"说");
    }
}

teacher.class

public class Teacher extends Person{
    public void say(String name) {
        System.out.println("老师类"+name+"说");
    }
}

Application.class

public class Application {
    public static void main(String[] args) {
        Student student = new Student();
        student.setName("张三");
        student.say(student.getName());
        Teacher teacher = new Teacher();
        teacher.setName("赵六");
        teacher.say(teacher.getName());


    }
}

object类:所有类的父类
所有类均继承object类,没有继承的默认继承

super:子类调用父类的方法和属性

学生类中设置了人类的属性值

public class Student extends Person{
    public void say(String name) {
        super.setName("张三");
        super.setAge(13);
        System.out.println("学生类"+name+"说");
    }
}

方法重写:子类重写父类中的方法
注意事项:
方法名和参数列表必须相同
修饰符范围可以扩大但不能缩小
抛出的异常范围可以缩小但是不能扩大
子类的方法和父类必须一致;方法体不同

4. 多态

同一方法可以根据发送的对象不同而采用多种不同的行为方式
一个对象的实际类型是确定的,但可以指向对象的引用类型有很多
多态存在的条件
有继承关系,子类重写父类方法,父类引用指向子类对象
多态是方法的多态,属性没有多态

Student student = new Student();
Person person = new Student();
Person teacher = new Teacher();

5. 抽象类

修饰符:abstract
abstract 修饰符可以修饰方法也可以修饰类
抽象类中可以没有抽象方法,但是由抽象方法的类一定是抽象类
抽象类不能用new关键字来创建,它是用来让子类继承的
抽象方法只有方法声明没有方法实现,它是用来让子类实现的。
子类继承抽象类,必须要实现抽象类没有实现的抽象方法,否则该类也要声明为抽象类

6. 接口

普通类:只有具体实现
抽象类:具体实现和抽象方法都有
接口:只有抽象方法,自己无法写具体实现
关键字:interface


二、异常

1.什么是异常

软件程序在运行过程中,非常可能遇到文件格式不对、内存或硬盘满了等异常问题,我们叫异常 Exception

2.异常简单分类

检查性异常:用户错误或问题引起的异常,这是程序员无法预见的。
运行时异常:运行时异常可能是被程序员避免的异常,运行时异常可以在编译时被忽略
错误ERROR:错误不是异常,而是脱离程序员控制的问题

3.Error

Error类对象由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关
Java虚拟机运行错误将出现OutOfMemoryError Java虚拟机(JVM)一般会选择线程中止
这些错误是不可查的,因为它们在应用程序的控制可处理能力之外。

4.Exception

ArrayIndexOutOfBoundsException(数组下标越界)
NullPointeException(空指针异常)
ArithmeticException(算术异常)
MissingResourceException(丢失资源异常)
Class Not Found Exception(找不到类异常)
这些异常一般由程序逻辑错误引起的;

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

5.异常处理机制

抛出异常
异常抛出后也要处理

public static void print(int[] a) throws Exception{
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i+1]);
        }
    }

捕获异常

public static void main(String[] args) {
        int[] a = {1,2,3,4,5};
        try {
            print(a);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void print(int[] a) throws Exception{
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i+1]);
        }
    }

5.自定义异常类

用户自定义异常类,只需要继承Exception类即可


  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值