【java学习笔记】类型转换、静态关键字、抽象类、接口、内部类、异常

一、类型转换

1.instanceof
  • 作用:判断其左边对象是否为其右边类的实例

  • 语法:

result = object instanceof class 返回一个布尔值
Result :布尔类型
Object : 任意对象表达式
Class : 任意已定义的对象类

  • object 是 class 的一个实例,则 instanceof 运算符返回 true。
  • 如果 object 不是指定类的一个实例,或者 object是 null,则返回 false。
  • class可以是类,可以是接口。
2.类型转换
  • 父类与子类装换
  • 直接上代码:
	person() obj = new Student()();
强制转换:
    父 类想调用子类中的方法,高转低
    Student stu = (Student) obj;  
或者:((Student) obj).方法();
	//这样 就能调用 student中的方法了

	子类想调用父类 
        可能会丢失一些方法
	

小结

  • 父类指向子类对象
  • 子类转换为父类 向上转型
  • 父类转换成子类 向下转型 强制转换
  • 目的为了让代码更加 简洁

二、静态(static)关键字

1.静态变量特点
a.内存分配 : 静态方法和变量因为初始化就被分配内存空间,因此是连续的
b.生命周期 :静态变量存活周期  初始化----程序结束
c.调用方法:类.静态变量名
d.共享方式:是全局变量,因此所有类的实例对象可共享
e.访问方式:静态成员不能访问非静态成员

语法: static int i;

  • 静态代码块 (只执行一次) : static{ }
  • 匿名代码块 (赋初始值) {}
  • 构造方法
  • 静态导入包
  • public final 【name】{ }
    ​ 被final修饰过的类就不能被子类继承

三、抽象类(abstract)

  • 通过 abstract修饰 的就是修饰类、修饰方法

    • 在一个类上面 使用abstract 就变成了抽象类
      例子:
	public abstract class Action{
}
特点:
  • 不能new这个抽象类,只能考子类实现; 约束
    ​ 抽象类中可以写不同的方法

      	抽象方法必须在抽象类中
    

    抽象的抽象; 约束~

四、接口

  • 普通类:只有具体实现
  • 抽象类:具体实现和规范(抽象方法)都有!
  • 接口:只要规范 ,自己无法写方法。约束和实现分离
  • 接口就是规范,定义一组原则
  • 接口的本质就是契约
  • 申明接口的关键字 : interface
  • 语法: public interface [name]{ }

作用:

  1. 约束
  2. 定义了一些方法,让不同的人实现
  3. public abstract 默认的方法
  4. public static final 静态常量
  5. 接口不能被实例化
  6. 通过 implement 可以实现多继承,切需要“重写”
//interface 定义的关键字,接口都是需要有实现类
public interface Demo10_UserService {  //定义了一个Demo10_UserService的接口
    //接口中的所有定义都是抽象的 public abstract ,所以void不用加修饰符
    //其中有四个对象

    void add(String name);
    void delete(String name);
    void update(String name);
    void query(String name);
}

-------------------------------------------------
   
 public interface Demo10_TimeService {   //再定义一个接口,其中有一个对象

    void timer();
}

-------------------------------------------------
    public class Demo10_UserSericempl implements Demo10_UserService,Demo10_TimeService {
    //定义一个实现类, 一般命名为:[name]impl 
    //public class [name]impl implements name1,name2{  }
        
        
    @Override     //进行方法重写
    public void add(String name) {

    }

    @Override
    public void delete(String name) {

    }

    @Override
    public void update(String name) {

    }

    @Override
    public void query(String name) {

    }

    @Override
    public void timer() {

    }
}

五、内部类

一个类的内部再定义一个类

  • 成员内部类
  • 静态内部类
  • 局部内部类
  • 匿名内部类

六、异常(Exception)

1.定义
- 指程序在运行 出现不期而至的各种情况
	java把异常当做对象来处理,并定义了一个基类 java.lang.Throwable作为所有的异类的超类
  • error 虚拟机运行错误

  • exception —runtime exception 运行异常

  • try监控异常区域 、catch捕获异常、finally 善后工作、 throw(抛出)、throws(捕获)
    例子:

    public static void main(String[] args) {
        int a =10;
        int b =5;

        try {   //监控区域
            System.out.println(a/b);
        }catch (ArithmeticException e){   //报错反馈
            System.out.println("报告错误为·····");
        }catch(Throwable){
         	System.out.println("sadasdsadasda")   
        }finally {   //横竖都得输出的
            System.out.println("善后工作");
        }

七、自定义异常

  • 字面意思自己定义报错
public class Demo12_MyException extends Exception {

    private int detail;

    public Demo12_MyException(int a){
        this.detail = a;
    }

    @Override
    public String toString() {
        return "Demo12_MyExceotion{"+ detail +"}";
    }
}

------------------------------------------------------------
        static void text(int a) throws Demo12_MyException {
        System.out.println("传递的参数为:"+a);

        if(a>10){
            throw new Demo12_MyException(a);
        }
        System.out.println("ok");
    }

    public static void main(String[] args) {
        try {
            text(20);
        }catch (Demo12_MyException e){
            System.out.println("Demo12_MyException" + e);
        }
    }

实际应用经验总结

  • 处理异常时 采用逻辑合理规避同时辅助 try-catch 来处理
  • 多个catch时 在最后可以加一个大型的异常报错(Exception)来处理可能遗漏的异常
  • 对于不确定的代码 可以加个try-catch 来处理潜在异常
  • 添加finally 语句块去释放占用的资源















参考1
自学内容,来源“kuangstudy.com”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值