类里面的代码块、内部类、继承以及多态

今天所诉的是类里面的代码块、内部类、继承以及多态。
目的:了解Java的类中所包含的代码块,内部类在类中的作用及它们的使用方法。继承和多态是Java语言中重要的特性。也是需要初学者们去掌握和熟悉的。
技术:
*类里面的代码块
*内部类
*继承
*多态
技术实际使用:

类里面的代码块:

代码块:java中用大括号{}将多行代码括起来,并形成一个独立的代码区间的代码形式称为代码块,它是java中常见的代码形式。
如下面所示:

 class Person {
           int age;//int 前面不加东西,就会默认为

           {
               age = 20;
               System.out.println("代码块 age=" + age);
           }
}

代码块可以分为普通代码块和初始化代码块
其中普通代码块仅出现于方法中,起到分隔不同功能代码的作用,其运行顺序依据代码块出现的先后。如下图:

public static void main(String[] args){
            
              {
                int x=3;
                System.out.println("1,普通代码块内的变量x="+x);    
              }
            {  
             int x=1;
             System.out.println("主方法内的变量x="+x);
             }
             {
                int y=7;
                System.out.println("2,普通代码块内的变量y="+y);    
             }
           }
     }

初始化代码块:初始化代码块有分为静态代码块和非静态代码块
类里面可以有多个代码块,当在创建类的实例时,就会执行类里面的代码块
静态代码块:如果使用 static 修饰初始化块,就称为静态代码块

//静态代码块
           static {
               //      age=20;静态代码块里面不能调用成员变量和实例方法
               System.out.println("这是静态代码块");
           }

非静态代码块:非静态代码块在类每次调用构造方法之前调用一次

注意
 1. 代码块的执行顺序和出现的先后顺序相同
 2.尽量不要在类里面写多个代码块
 3.在对象创建之前就会被优先调用
 4.代码块的基本样式:
修饰符{
 *     预先执行的内容
 * }
内部类
  • 定义一个类 可以在多个地方定义
  • 1.单独创建一个文件管理一个类
  • 2.直接在文件里面 类A的上面和下面创建
  • 3.直接在某个类A内部创建一个类, 一个类依附在另一个类B


    14.PNG
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;
        }
    }
}

静态内部类:静态内部类只能访问外部类的[静态成员],用static来定义。

生成(new)一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别

class testLayout {
        public static void main(String[] args){
            //创建一个相对布局 容器视图
            RelativeLayout rl = new RelativeLayout();
            rl.view = "分享按钮";

            //显示这个视图
            //就需准备好这个视图的布局属性
            //第一种方法:
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(20,
                    20, 20, 20);
            rl.show(params);
            //第二种方法:使用匿名对象,只需使用一次
            rl.show(new RelativeLayout.LayoutParams(20,
                    20, 20, 20));
            TestInner ti=new TestInner();
            ti.test();
        }
        }
继承

继承:A extends B
获得父类的方法和属性并且需要添加自己的属性和方法。
例如:兔子和羊属于食草动物类,狮子和豹属于食肉动物类。
食草动物和食肉动物又是属于动物类。动物类是父类,食草动物和食肉动物是 子类,所以继承需要符合的关系是:父类更广泛,子类要具体。虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。

  • Java里面只能单继承,变向多继承
    继承的基本格式:
    class 父类 {
    }
    class 子类 extends 父类 {
    }
    其中extends是关键字,可以声明一个类是由另一个类继承来的。
class Person1{
    String name;
    int age;
    public Person1(String name,int age){
        this.name=name;
        this.age=age;
    }
    public void walk(){
        System.out.println(name+":人走路");

    }
    public void eat(){
System.out.println(name+"人吃饭");
    }
}

class Students extends Person1{
    int id;
    String school;

    public Students(String name,int age,int id,String school){
        super(name,age);
        this.id=id;
        this.school=school;
    }
    public  void show(){
     System.out.println("name:"+name);
    }
//方法的重写
    @Override
    public void walk(){
     System.out.println("学生优雅的走路");
    }

    @Override
    public void eat() {
        System.out.println("学生大口吃饭");
    }

    @Override
    public String toString() {
        return "Students{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", id=" + id +
                ", school='" + school + '\'' +
                '}';
    }
}

里面的Students是由Person1继承而来的。
其中方法的重写:如果子类里面需要重新实现父类的方法,就需要重写

  • @Override
    如果在子类里面需要调用父类的方法或者显示调用父类的属性
  • 使用super
  • 上面情况下需要在一个方法里面调用super的对应方法?
   @Override
     public void walk(){
     super.walk();
     }
  • 如果一个 方法需要完成一个功能,又不能单独完成,必须要父类
  • 做相应的工作:
    1.父类做完事之后,子类在操作
    2.子类做点事情,再调用父类去完成
如果父类有自定义构造方法
  • 那么子类的构造方法必须显示调用父类的构造方法
  • 如果父类里面有内部类
  • 子类中有同名的内部类
  • 那么父类中的内部类就被屏蔽了
  • 如果非要使用父类中的内部类,只能使用全类名Personl.内部类名
多态:

多态polymorphic:

  • 1.同一个方法 多种实现=在不同的子类中有不同的实现
  • 2.如果有继承关系,子类的对象可以使用父类变量接收,类型的自动向上转换
class A{
    public  void info(){
        System.out.println("in A ");
    }
}
class B extends A{
    @Override
    public void info() {
        System.out.println(" in B ");
    }
}

class C extends A{
    @Override
    public void info() {
        System.out.println("in C");
    }
}
 //C extends A;
    C testc= new C();

    A testc2=new C();
    testc2.info();

    Object testc3= new C();

    //错误 只能子类向父类转
    C t=new A();
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容