1.【权限修饰符】
//private修饰下,本类中可以随意访问,超出本类范围不可以直接访问
2.【this and super】
//this指代的是当前类的对象
//super指代的是父类的对象
super关键字三种用法:
1)在子类的【成员方法】中访问父类的【成员变量】;
2)在子类的【成员方法】中访问父类的【成员方法】;
3)在子类的【构造方法】中访问父类的【构造方法】;
this关键字的三种用法:
1)在本类的【成员方法】中访问本类的【成员变量】;
2)在本类的【成员方法】中访问本类的【另一个成员方法】;
3)在本类的【构造方法】中访问本类的【另一个构造方法】;
继承关系下,父子类的访问特点:
1)子类构造方法中有一个默认隐含的super();
故一定先执行父类构造方法,再执行子类构造方法。
2)子类构造可以通过super关键字来调用父类重载构造
3)super的父类构造调用,必须是子类构造方法的第一个语句,
不能一个子类构造调用多次super构造;
4)总结:子类必须调用父类构造,不写默认送一个super();
一个构造方法只能有一个super,且必须为第一个。
//构造方法不能继承,子类应参照父类进行生成相应构造方法
//一个无参,一个全参(自己的成员变量,super父类的成员变量)
注意事项:
1)this(…)也必须是构造方法的第一个,且是唯一一个。
2)this和super两种调用方法不能同时使用。
关于静态:1)静态不能直接访问非静态;
2)静态方法中不能使用this关键字;
//静态方法只能调用静态变量
//非静态方法可以调用静态变量和非静态变量
//类方法:静态方法
//实例方法:对象的方法
3.【final】
4.关于内部类
1)【成员内部类】【$】
修饰符 class 外部类名称{ //外部类
修饰符 class 内部类名称{ //(成员)内部类
//..
}
//..
}
“内”用“外”随意访问;
“外”用“内”:(必须借助内部类对象)
【间接方式】:(常用)
在外部类的方法中使用成员内部类,
然后main只调用外部类方法
【直接方式】:(外.内)
外部类名称.内部类名称 对象名 = new 外部类名称( ).new 内部类名称( );
//内部类静态:
Person.Heart1 heart1 = new Person.Heart1(); //内部类不需要建立对象
heart1.method1();
//内部类和其成员方法均静态:
Person.Heart2.method2();
//内部类重名变量访问:
外部类名称.this.外部类成员变量; //访问外部类成员变量
2)【局部内部类(含匿名内部类)】
//定义在一个方法内部
修饰符 class 外部类名称{ //外部类
修饰符 返回值类型 外部类方法名(参数列表){ //外部方法
class 局部内部类名称{ //局部内部类
//..
}
//创建局部内部类的对象
//使用局部内部类的方法
}
}
访问权限(定义):
外部类:public / (default)
成员内部类:public / protected / (default) / private
局部内部类:什么都不能写(!= default)
局部内部类的final问题:
局部内部类若希望访问所在方法的局部变量,那这个局部变量必须是【有效final的】。