一、代码块
代码块:在对象创建之前就优先会被调用
静态代码块:使用static修饰的初始化代码块.在主方法执行之前执行,而且只执行一次
静态代码块里不能调用成员变量和实例方法
格式:
修饰符{
预先执行的内容
}
代码块里变量属于局部变量,只在自己所在区域(前后的{})内有效。
注:类里面可以有多个代码块,执行顺序和出现的先后顺序相同,但 尽量不要在类里面写多个代码块
二、内部类
内部类,在一个类的内部定义另一个类。嵌套类分为两种,即静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类。内部类几乎可以处于一个类内部任何位置,可以与实例变量处于同一级,或处于方法之内,甚至是一个表达式的一部分。
内部类对象可以访问创建它的对象的实现,包括私有数据;
内部类不为同一包的其他类所见,具有很好的封装性;
非静态的内部类可以访问外部类的属性和方法;
三、继承
通过extends关键字来实现
1、 A extends B,子类可获得父类的方法和属性,并且在需要时可添加自己的属性和方法
* Java里面只能单继承 可变向多继承
* 所有的类都是直接或间接继承于object类
2、如果在子类里面需要调用父类的方法或者显示调用父类的属性 使用super
格式:super.变量名;
super,方法名;
例:
class Person1{
public void walk() {
System.out.println("走路");
}
}
class Student extends Person1{
public void walk(){
super.walk();//主动调用父类的方法,实现父类的功能
System.out.println("学生优雅的走路");
}
}
public class TestExtends{
public static void main(String[] args){
Student xw=new Student();
xw.walk;
}
结果:
走路
学生优雅的走路
四、多态
多态
1、同一个方法 多种实现=在不同的子类中有不同的实现
2、如果有继承关系:子类的对象可以使用父类的变量接收--类型的自动向上转换,从子类向父类转
3、弊端:当父类引用指向子类对象时,虽提高了扩展性,但只能访问父类中具备的方法,不可访问子类中的方法;即访问的局限性。