美文网首页
DAY11Java语言入门基础教学5

DAY11Java语言入门基础教学5

作者: 辞cccc | 来源:发表于2019-08-10 19:15 被阅读0次

    代码块

    修饰符{
    预先执行的内容
    }
    
    1. 类里面可以有多个代码块,执行顺序和出现的先后顺序相同,尽量不要在一个类里写多个代码块
    2. 修饰符static 静态代码块中不能调用成员变量和实例方法

    内部类

    定义

    将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类

    分类

    成员内部类

    1. 成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。
    2. 当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,即默认情况下访问的是成员内部类的成员。如果要访问外部类的同名成员,需要以下面的形式进行访问:
    • 外部类.this.成员变量
    • 外部类.this.成员方法
      在外部类中如果要访问成员内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问。
    1. 内部类可以拥有 private 访问权限、protected 访问权限、public 访问权限及包访问权限。

    局部内部类

    1. 局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在2. 于局部内部类的访问仅限于方法内或者该作用域内。
      局部内部类就像是方法里面的一个局部变量一样,是不能有 public、protected、private 以及 static 修饰符的。

    匿名内部类

    匿名内部类也是不能有访问修饰符和 static 修饰符的。

    静态内部类

    1. 静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。

    创建方法

    1. 单独创建一个文件管理一个类
    2. 直接在文件里面 类A的上面和下面创建
    3. 直接在某个类A内部创建一个类
      一个类A依附于另一个类B
    class RelativeLayout{
        String view;
        public void show(LayoutParams layout){
            System.out.println("视图:"+view+"显示出来了");
                    System.out.println("left:"+layout.leftMergin+
                            "top:"+layout.topMergin+
                            "right:"+layout.rightMergin+
                            "bottom:"+layout.bottomMergin);
        }
        public static class LayoutParams{
            float leftMergin;
            float topMergin;
            float rightMergin;
            float bottomMergin;
            public LayoutParams(float leftMergin, float topMergin,
                                float rightMergin, float bottomMergin){
                this.leftMergin = leftMergin;
                this.topMergin = topMergin;
                this.rightMergin = rightMergin;
                this.bottomMergin = bottomMergin;
            }
        }
    }
    
    class testLayout{
        public static void main(String[] args){
            RelativeLayout rl = new RelativeLayout();
            rl.view = "分享按钮";
            //1.
    //        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(20,20,
    //                20,20);
    //        rl.show(params);
            
            //使用匿名对象 只需要使用一次
            rl.show(new RelativeLayout.LayoutParams(20,20,
                    20,20));
        }
    }
    

    PS内部类尽量不要暴露给外部

    继承 A extends B

    作用

    继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。

    class Person1{
    String name;
    int age;
    
    public void walk(){}
    public void eat(){}
    }
    class Student extends Person1{
    int id;
    String school;
    }
    
    1. java只能单继承,变相多继承。
    2. 所有的类都是直接或间接继承Object类
    3. 当调用子类的一个方法是如果没有就去父类找
    4. 如果在子类需要调用父类的方法或者显示调用父类的属性和方法 用super

    什么情况下需要在一个方法里面调用super对应的方法?

    public void walk(){
    super.walk();
    }
    

    如果一个方法需要完成一个功能,又不能单独完成,必须要父类作相应的工作,

    1. 父类做完之后子类再操作
    2. 子类做点事情之后 再调用父类去完成
      如果子类里面需要重新实现父类的方法 就需要重写 @Override

    多态polymorphic

    1. 同一个方法再不同子类中有不同的实现
    2. 如果有继承关系 子类的对象可以使用父类变量接收
      类型的自动向上转换

    体会

    今天没有做特别长(比如扑克游戏)那样的demo,快乐。对于内部类的调用还是有点迷糊,打算再看看资料。

    相关文章

      网友评论

          本文标题:DAY11Java语言入门基础教学5

          本文链接:https://www.haomeiwen.com/subject/vutdjctx.html