今天学习了昨天还没学完的静态方法以及继承
在静态方法中不能使用this和super关键字,因为static是属于类的,不是属于某一个对象
在静态方法中可以直接调用本类中其他的静态方法
在静态方法中不能直接调用本类中其他的非静态方法
在静态方法中可以直接访问本类中其他的静态变量
在静态方法中不能直接访问本类中其他的非静态变量
在非静态方法中可以直接调用本例中的其他静态方法
在非静态方法中可以直接方法问本类中其他的静态变量
在非静态方法中可以直接方法问本类中其他的非静态变量
在非静态方法中可以直接调用本类中的其它非静态方法
- public class StaticMethod {
- // 定义属性
- public String name;
- public static int age;
-
- // 定义方法
-
- public static void test() {
- // 在静态方法中不能使用this和super关键字,因为static是属于类的,不是属于某一个对象
- /*
- * this.name="马力"; this.age=4;
- */
- System.out.println("我是静态方法test()");
- }
-
- public static void demo() {
- // 在静态方法中可以直接调用本类中其他的静态方法
- test();
- // 在静态方法中不能直接调用本类中其他的非静态方法
- // ttt();
- // 在静态方法中不能直接访问本类中其他的非静态变量
- // System.out.println(name);
- // 在静态方法中可以直接访问本类中其他的静态变量
- System.out.println(age);
- System.out.println("我是静态方法Demo()");
- }
-
- public void ceshi() {
- // 在非静态方法中可以直接调用本类中的其它非静态方法
- ttt();
- // 在非静态方法中可以直接调用本例中的其他静态方法
- test();
- // 在非静态方法中可以直接方法问本类中其他的静态变量
- System.out.println(age);
- // 在非静态方法中可以直接方法问本类中其他的非静态变量
- System.out.println(name);
- System.out.println("我是非静态方法");
- }
-
- public void ttt() {
- System.out.println("我是非静态方法");
- }
综上所述:静态的只能访问静态的(变量、方法) 非静态的既可以访问静态的也可以访问非静态的
继承的好处:
方便修改代码
减少代码量
继承是Java中实现代码重用的重要手段之一。Java中只支持单根继承,即一个类只能有一个直接父类
访问父类构造方法
super();
super(name);
访问父类属性
super.name;
访问父类方法
super.print();
(1)使用super关键字,super代表父类对象
(2)在子类构造方法中调用且必须是第一句
(3)不可以访问父类中定义为private的属性和方法
继承条件下构造方法的调用规则
子类构造方法没有通过super显式调用父类的有参构造方法,也没通过this显式调用自身其他构造方法------系统默认调用父类的无参构造方法
子类构造方法通过super显式调用父类的有参构造方法------执行父类相应构造方法,而不执行父类无参构造方法
子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则
继承public和protected修饰的属性和方法,不管子类和父类是否在同一个包里
继承默认权限修饰符修饰的属性和方法,但子类和父类必须在同一个包里
private成员
子类与父类不在同包,使用默认访问权限的成员
构造方法
继承与真实世界类似
继承是代码重用的一种方式