发表于: 2017-12-01 19:35:13

2 864


今天完成的事情:

1.学习java中的内部类

    定义:定义在一个类里面的类

    作用:(1)提供更好的封装,不允许同一个包中其他类访问该类

          (2)内部类可以直接访问外部类的所有数据,包括私有数据

    内部类的类型:

           成员内部类、静态内部类、方法内部类、匿名内部类

    实战:    注意事项如代码所示:

          public class HelloWorld {

          public class Inner{

          public void show() {

          System.out.println("哈哈哈");

          }

          }

          public static void main(String[] args) {

          HelloWorld hello = new HelloWorld();

          Inner i = hello.new Inner();

          i.show();//要使用内部类的方法,首先需要将外部类实例化一个对象,再通过外部类的对象对内部类实例化,最后才能调用内部类的方法。

          }

          }

    a.成员内部类的学习

        知识点:除了具有内部类的所有特点,还需注意的是:如果外部类和内部类有相同的变量或者方法,内部类默认访问自己的变量或方法;如果访问                     外部类的变量,可以使用this关键字。用代码表现如下:

          public class Outer {

            int b = 1;

              public class Inner{

               int b = 2;

                public void test() {

                System.out.println("访问外部类中的b:"+Outer.this.b);//通过this关键字访问外部类的变量

                System.out.println("访问内部类中的b:"+b);//默认访问自己的变量

               }

               }

               public static void main(String[] args) {

               Outer o = new Outer();

               Inner i = o.new Inner();

               i.test();

               }

               }

            运行结果与预期结果一样,验证了该知识点。

    b.静态内部类的学习

        知识点:(1)静态内部类不能直接访问外部非静态成员,可以通过new 外部类().成员的方式访问;

                (2)如果外部类的静态成员与内部类的成员名相同,可通 过类名.静态成员 访问外部类的静态成员;如不相同,可通过成员名直接访问

                (3)创建静态内部类的对象时,不需要外部类对象,可以直接创建。

                  以上知识点都在注释行验证:

           public class HelloWorld {

              int a = 99;

              static int b = 1;

             public static class Inner{

               int b = 2;

               public void test() {

                System.out.println("访问外部类中的b"+HelloWorld.b);

                System.out.println("访问内部类中的b"+b);//验证知识点(2)

                //System.out.println("访问外部类中的a"+a);

                System.out.println("访问外部类中的a"+new HelloWorld().a);//验证知识点(1)

                 }

                 }

                 public static void main(String[] args) {

                 Inner i = new Inner();//验证知识点(3)

                 i.test();

                 }

                 }

    c.方法内部类的学习

        定义:方法内部类就是定义在外部类方法中的内部类,只在该方法内部可见,即只能在该方法内部使用。

             注意事项:因为内部类在外部类的方法中,在使用外部类方法时,要通过内部类对象来调用内部类方法,注释行已标记。

           public class MOuter {

           public void show() {

           int a = 25;

           int b = 15;

           class MInner{

            int c = 2;

            public void print() {

            System.out.println("访问外部类的常量a:"+a);

            }

            }

             MInner mi = new MInner();

             mi.print();//  注意事项:这是如果没有创建内部类对象,则不会执行内部类的方法,切记。

             }

             public static void main(String[] args) {

              MOuter mo = new MOuter();

              mo.show();

             }

             }

2.java中的继承

     a.继承的概念:是类与类的关系。子类拥有父类的所有属性和方法。

       语法规则:class 子类 extends 父类

     b.方法的重写:子类对继承父类的方法不满意,重写继承父类的方法,在调用时优先调用子类的方法。

        注意:重写时方法的返回值类型、方法名、与参数类型及个数都要与父类相同,才叫做重写,否则就是方法的重载。

       如上图代码所示,我在子类Dog中重写了方法,所以在DogTest中输出的时候会优先调用Dog的方法。成功实现了方法的重写。

     c.java中的继承初始化顺序

       顺序:先执行父类初始化,再执行子类;先执行初始化对象中的属性,再执行构造方法中的初始化。验证代码如下:

      观察输出结果,我们可以知道肯定是先运行的“int age = 10”因为最后输出的是20;第一行显示的是Animal类执行了,我们可以知道,是先运行的       父类初始化。

3.今天写了比较多的代码,感觉非常的开心,顺便鼓舞了一下群里的小伙伴。

明天要做的事情:

1.继续学习java中的继承;

2.学习java中的多态;

3.继续多写代码练习。

今天的收获:

都上图了,今天干货满满。准备写完日报好好消化消化,找些题进行一下练习。

最后的最后,又要麻烦师兄审核了!


返回列表 返回列表
评论

    分享到