Java面向对象——2021-12-15
instanceof
Person instanceof Student //判断Person类与Student类之间是否有关系
用于判断能否进行类型转换
子类转换成父类,有可能丢失自己的本来的一些方法!
- 父类引用指向子类的对象 Person stu = new Student();
- 把子类转换为父类,向上转型 Student s = new Student(); Person p = s;
- 把父类转换为子类,向下转型:强制转换
- 方便方法的调用,减少重复的代码! 简洁
抽象:封装、继承、多态 抽象类、接口
static
静态变量可直接通过类名访问,且类里只有一个静态变量在内存中,和类一起加载(方法同上)
public class Person{
{
//代码块(匿名代码块),和类一块加载,无法主动调用,在构造器之前
}
static {
//静态代码块,最早执行,只执行一次,其他的new一次对象执行一次
}
}
一般生成随机数
Math.random();
静态导入包后可直接调用
import static java.lang.Math.random;
random();
被final
修饰的类就不能被继承了
抽象类
被abstract
修饰的类
//abstract 抽象类;
public abstract class Action{
//约束 非抽象类的子类必须帮我们实现
//abstract,抽象方法,只有方法名字,没有方法的实现
public abstract void doSomething();
}
- 不能new这个抽象类,只能靠子类去实现:约束!
- 抽象类中可以写普通的方法
- 抽象方法必须在抽象类中
抽象的抽象:约束
接口
接口的本质是契约
,定义好了必须遵守
接口中的所有定义其实都是抽象的 public abstract
一个类可以实现接口 implements 接口
实现了接口的类,必须重写接口里的方法
接口可以多实现 implement 接口1,接口2
作用:
- 约束
- 定义一些方法,让不同的人实现
- public abstract //接口中的方法默认为
- public static final //接口中的属性默认为
- 接口不能被实例化,接口中没有构造方法
- implements 可以实现多个接口
- 实现接口的子类必须要重写接口中的方法
内部类
内部类就是在类的内部定义的类
内部类定义:
public class Outer{
private int id = 10;
publi void out(){
System.out.println("这是外部类的方法");
}
public class Inner{
public void in(){
System.out.println("这是内部类的方法"+id);
}
}
}
//在其他类的new
Outer out = new Outer();
Outer.Inner in = out.new Inner();
in.in();
//内部类可以调用类的私有属性
//静态内部类不可以直接调用类的非静态属性
局部内部就是在类的方法中写的类