2021-06-17

1、instance关键字
在 Java 中可以使用 instanceof 关键字判断一个对象是否为一个类(或接口、抽象类、父类)的实例。
语法格式如下: boolean result = obj instanceof Class;
其中,obj 是一个对象,Class 表示一个类或接口。当obj 是 class 类(或接口)的实例或者子类实例时,结果 result 返回 true,否则返回 false。
2、对象类型转换,是指存在继承关系的对象,不是任意类型的对象,分别是向上转型(upcasting)和向下转型(downcasting)。
向上转型:父类引用指向子类对象为向上转型。
语法格式如下: fatherClass obj = new sonClass();
fatherClass 是父类名称或接口名称,obj 是创建的对象,sonClass 是子类名称。
向上转型就是把子类对象直接赋给父类引用,不用强制转换。
使用向上转型可以调用父类类型中的所有成员,不能调用子类类型中特有成员,最终运行效果
看子类的具体实现。

向下转型:与向上转型相反,子类对象指向父类引用为向下转型。
语法格式如下:sonClass obj = (sonClass) fatherClass;
fatherClass 是父类名称,obj 是创建的对象,sonClass 是子类名称。
向下转型可以调用子类类型中所有的成员,
不过需要注意的是如果父类引用对象指向的是子类对象,那么在向下转型的过程中是安全的,
也就是编译是不会出错误。

但是如果父类引用对象是父类本身,那么在向下转型的过程中是不安全的,编译不会出错,但
是运行时会出现我们开始提到的 Java 强制类型转换异常,一般使用 instanceof 运算符来避免
出此类错误。
例子:
Father f1 = new Son(); // 这就叫 upcasting (向上转型)
// 现在f1引用指向一个Son对象

Son s1 = (Son)f1; // 这就叫 downcasting (向下转型)
// 现在f1还是指向Son对象

第2个例子:
Father f2 = new Father();
Son s2 = (Son)f2; // 出错,子类引用不能指向父类对象
因为f1指向一个子类对象,Father f1 = new Son();
子类s1引用当然可以指向子类对象了。
而f2 被传给了一个Father对象,Father f2 = new Father();
子类s1引用不能指向父类对象。
3、修饰符总结
01、四个访问控制符:
注意:在不写访问控制符的情况下,就是friendly(默认)修饰符
在这里插入图片描述

02、类修饰符:
public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是
公共类。
friendly,默认的修饰符,只有在相同包中的对象才能使用这样的类。
abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。
final,将一个类声明为最终(即非继承类),表示他不能被其他类继承。

03、成员变量修饰符:
public(公共访问控制符),指定该变量为公共的,他可以被任何对象的方法访问。
private(私有访问控制符)指定该变量只允许自己的类的方法访问,其他任何类(包括子类)中的
方法均不能访问。
protected(保护访问控制符)指定该变量可以别被自己的类和子类访问。在子类中可以覆盖此变
量。
friendly ,在同一个包中的类可以访问,其他包中的类不能访问。
final,最终修饰符,指定此变量的值不能变。
static(静态修饰符)指定变量被所有对象共享,即所有实例都可以使用该变量。变量属于这个
类。

04、方法修饰符:
public(公共控制符),指定该方法可以从所有类访问
private(私有控制符)指定此方法只能有自己类等方法访问,其他的类不能访问(包括子类)
protected(保护访问控制符)指定该方法可以被它的类和子类进行访问。
final,指定该方法不能被重载。
static,指定不需要实例化就可以激活的一个方法。
synchronize,同步修饰符,在多个线程中,该修饰符用于在运行前,对他所属的方法加锁,以防
止其他线程的访问,运行结束后解锁。
native,本地修饰符。指定此方法的方法体是用其他语言在程序外部编写的。

05、初始化块:
static(可选),使用static修饰的初始化块被称为静态代码块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值