1.类型转换
类型转换分为自动类型转换和强制类型转换
1.自动类型转换/向上类型转换:父类(小类型)->子类(大类型)(不存在风险)
Animal animal = new Animal();
Dog dog = new Dog();
animal = dog; //自动类型转换,不存在风险
2.强制类型转换/向下类型转换:子类(大类型)->父类(小类型)(存在风险)
dog = animal; //强制类型转换,存在风险
2.instanceof语句
作用:判断某个对象是否是某个类型的对象或其子类的对象
用法:
对象 instanceof 类型; //返回布尔值
3.抽象类
关键字为abstract
public abstract class 类名{
类成员;
public abstract void 方法名();//抽象方法,只能在抽象类中声明,不需要实现,在抽象类的子类中必须重写
}
4.接口
接口关键字为interface,语法与class类似,为:
public interface 接口名 extends [父接口名1,父接口名2,...]{//通常使用public修饰
常量定义;
抽象方法定义;//且方法修饰符通常是public或不是用修饰符
}
接口中的变量定义时都会自动以 public static final 修饰
接口中的方法定义时都会自动以 public abstract 修饰
使用接口语法:
修饰符 class 类名 extends 父类名 implements 父接口名1,父接口名2,...{
//由于接口中的方法都是抽象方法,所以使用了接口后必须实现该接口中的抽象方法
}
使用接口对象语法:
interface i = new 实现了该接口的类名();//不过只能访问接口内的成员
在接口中使用匿名内部类:
匿名内部类使用语法格式:
interface i = new interface(){
@Override
public void method(){
方法实现体;
}
}
//或
new interface(){
@Override
public void method(){
方法实现体;
}
}
也就是说不需要使用一个外部类来实现一个接口里的抽象方法,而是通过匿名内部类的方式直接实现并使用接口内的抽象方法。