this关键字 代表当前对象
this关键字 代表当前对象
this 指针 只能在类里使用 代表当前对象
static的应用
getter setter
封装、继承、
只使用一次--匿名对象
匿名对象不可以在其他地方使用
销毁时候:先销毁栈 然后销毁没有长地址指向的堆 然后销毁各个未被指向的堆(堆可以放地址)
new a()
多态:
继承关系:子类是父类
通过父类来声明对象,然后构造一个新的函数
例如:Person p = null;
p = new Teacher();
p = new Student();
多态情况下可以直接调用父类里面的方法,但是不能直接调用子类的方法(因为子类方法存在于子类当中,而声明的时候是用父类声明的,父类当中没有该方法,所以无法直接调用)。
如何调用子类方法?
利用强制转换来调用:
((Teacher)p).teach();
将p强制转换为Teacher,然后来调用Teacher(子类)的方法
这样的声明表面上是一个Person类,但是本质上是一个Teacher类,所以可以用强制类型转换来调用Teacher里面的方法,但是不能用强制转换来调用其他类里面的方法。
方法中的变量称为局部变量,定义在类中的变量称为成员变量
构造方法相关
构造方法名与类名相同
当没有定义任何构造方法的时候,系统会帮我们提供一个默认的构造方法(该默认方法无参)
如果自己定义了其他的构造方法,系统就不会提供默认构造方法
可以构造多个构造方法
构造方法内变量和参数名字需要不一样
构造方法的好处是,初始化对象的属性比较方便
不给的话会给个默认constructor
给的话会不给
需要写两个才能回复默认的
访问修饰符可以修饰方法以及变量