JavaSE总结 (11)

Java中的instanceof关键字可以用来判断某一个对象是不是某一个类是实例。如果是,返回true;如果不是,返回false;如果二者无关,则编译不通过。

示例:

package com.wmwx.oop; import com.wmwx.oop.Demo06.Person; import com.wmwx.oop.Demo06.Student; import com.wmwx.oop.Demo06.Teacher; //启动类 public class Application { public static void main(String[] args) { //继承关系如下: //Object -> Person -> Student //Object -> Person -> Teacher //Object -> String Object object = new Student(); System.out.println(object instanceof Student); //输出true System.out.println(object instanceof Person); //输出true System.out.println(object instanceof Object); //输出true System.out.println(object instanceof Teacher); //输出false System.out.println(object instanceof String); //输出false System.out.println("====="); Person person = new Student(); System.out.println(person instanceof Student); //输出true System.out.println(person instanceof Person); //输出true System.out.println(person instanceof Object); //输出true System.out.println(person instanceof Teacher); //输出false //System.out.println(person instanceof String); //编译时报错 System.out.println("====="); Student student = new Student(); System.out.println(student instanceof Student); //输出true System.out.println(student instanceof Person); //输出true System.out.println(student instanceof Object); //输出true //System.out.println(student instanceof Teacher);//编译时报错 //System.out.println(student instanceof String); //编译时报错 } } 类型转换

子类转换为父类,是向转型,可自动转换。

父类转换为子类,是向转型,需强制转换。

示例:

Person类:

package com.wmwx.oop.Demo06; public class Person { public void run(){ System.out.println("人在跑步。"); } }

Student类:

package com.wmwx.oop.Demo06; public class Student extends Person{ public void walk(){ System.out.println("学生在走路。"); } }

Application类:

package com.wmwx.oop; import com.wmwx.oop.Demo06.Person; import com.wmwx.oop.Demo06.Student; //启动类 public class Application { public static void main(String[] args) { //高 ----------------- 低 Person person = new Student(); ((Student)person).walk(); //强制类型转换 Student student = new Student(); Person obj = student; //子类转换为父类,可能会丢失一些方法 //obj.walk(); //编译时报错 } } 静态代码块

静态代码块会在类加载时执行,且只会执行一次。

示例:

Person类:

package com.wmwx.oop.Demo07; public class Person { //第二个执行,可在这里赋初始值 { System.out.println("匿名代码块"); } //第一个执行,只执行一次 static { System.out.println("静态代码块"); } //第三个执行 public Person() { System.out.println("构造方法"); } }

Application类:

package com.wmwx.oop; import com.wmwx.oop.Demo07.Person; //启动类 public class Application { public static void main(String[] args) { Person person = new Person(); //第一行输出"静态代码块" //第二行输出"匿名代码块" //第三行输出"构造方法" } } 抽象类

在Java语言中使用abstract 来定义抽象类,其基本语法如下:

abstract class 类名{ //属性 //方法 }

抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。在Java中一个类只能继承一个抽象类,但一个类可以实现多个接口

在Java语言中使用abstract 来定义抽象方法,其基本语法如下:

abstract 访问修饰符 返回值类型 方法名(参数);

抽象类与抽象方法的规则:

抽象类不能被实例化(即不能被 new ),只有抽象类的非抽象子类可以创建对象。

抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

抽象类中的抽象方法只是声明,不包含方法体,也就是不给出方法的具体实现。

构造方法、类方法(用 static 修饰的方法)不能声明为抽象方法。

抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类

示例:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssssz.html