成员变量与局部变量的区别:
成员变量:
1、成员变量定义在类中,在整个类中都可以被访问。
2、成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
3、成员变量有默认初始化值。
局部变量:
1、局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
2、局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
3、局部变量没有默认初始化值
在使用变量时需要遵循的原则为:就近原则
首先在局部范围找,有就使用;接着在成员位置找。
封装:使用不同的访问权限,将类的成员变量访问权限设置为私有(隐藏某些信息,不可直接进行访问)
继承:当类之间有许多属性和方法相同时,直接继承大类即可(类似于static)
方法:
[修饰符] class 类B extends 类A{…}
B为子类/派生类,A为父类/基类
使类和类之间产生is -a的关系
子类会继承父类所有的实例变量和实例方法
子类不能直接访问父类private的变量和方法
Java支持多层继承
Java只支持单继承,不支持多重继承(猫只能继承一个动物类,不能再继承生物类)
java.lang.Object是类层次结构的跟类,即所有类的父类,当没有显示继承其他类时,默认继承Object类
方法重写
当父类某个方法不是十分符合子类所需时,可以对此方法用相同的名字在子类中重新写一遍,在调用时会调用子类中的此方法,子类方法会覆盖父类方法
注意:构造方法和静态方法不能重写,成员变量不存在重写
方法重写规则:
1.子类重写方法必须和父类中被重写方法名称,参数列表相同
2.返回值一致
3.子类方法访问权限不能小于父类(父类私有方法不能重写,跨包的父类默认权限的方法也不能重写)
编译时不能确定具体的调用方法,而在程序运行时,才能确定具体的被调用的方法
默认权限:包内部访问权限。即包内其他类可以访问该类,但是该类在包外部的其他类不能访问
区分重载:一个类的多态性表现,而方法重写是子类与父类的一种多态性表现
super关键字:
super来调用父类中的指定操作:
super可以访问父类中定义的属性,成员方法,可以用于在子类构造器中调用父类的构造器
super不是父类对象,只是引用,仍属于子类对象
继承中的构造方法:
子类不会继承父类的构造方法,只能通过super(形参)来调用父类指定的构造方法
规定super(形参),必须声明在构造器的首行
无super出现时,子类默认调用super,即父类中的空参构造器