• day09_作业


    1:代码块是什么?代码块的分类和各自特点?
    在Java中,使用{}括起来的代码被称为代码块
    代码块分为局部代码块,构造代码块,静态代码块,同步代码块
    局部代码块:在方法中出现,限定变量生命周期,及早释放,提高内存利用率
    构造代码块:在类中方法外出现,多个构造方法中相同的代码存放到一起,每次调用构造都执行,并在构造方法前执行
    静态代码块:在类中方法外出现,并加上static修饰,用于给类进行初始化,在加载的时候就执行,并且只执行一次,一般用于加载驱动
    另:位于主方法类中的静态代码块,优先于主方法执行
    2:静态代码块,构造代码块,构造方法的执行流程?
    程序运行时,类加载进内存,首先静态代码块执行,只执行一次,为类进行初始化,接着构造代码块执行,最后构造方法执行,将对象初始化
    然后创建该类的对象时,每次调用构造方法都是先构造代码块执行,然后构造方法执行,静态代码块不会再次执行
    3:继承概述
    让类与类之间产生关系,子父类关系,格式:子类 extends 父类
    4:继承的好处
    提高了代码复用性
    提高了代码的维护性
    让类与类之间产生了关系,是多态的前提
    5:Java中继承的特点
    java只支持单继承不支持多继承(多继承有安全隐患,有些语言支持多继承,格式 extends 类1,类2...)
    java支持多(层)重继承(继承体系)
    如果想用这个体系的所有功能用最底层的类创建对象
    如果想看这个体系的共性功能,看最顶层的类
    6:Java中继承的注意事项?以及我们什么时候使用继承?
    注意事项:子类只能继承父类所有非私有的成员(成员方法和成员变量)
              子类不能继承父类的构造方法,但可以通过super关键字去访问父类的构造方法
              不要为了部分功能去继承
    什么时候使用继承:继承其实体现的是一种关系:is a
             采用假设法。如果有两个类A,B。只有他们符合A是B的一种,或者B是A的一种,就可以考虑使用继承
    7:继承中的成员访问特点
     A:成员变量
      在子类方法中访问一个变量 this.成员变量
     B:成员方法
      在测试类中通过子类对象去访问一个方法 this.成员方法


    8:继承中构造方法的执行流程?假如父类没有无参构造方法,子类应该怎么办?
            super解决
     super(name,age);
     this解决
     this(name,age);

    9:面试题:
     方法重写和方法重载的区别?方法重载能改变返回值类型吗?
     Overload
     Override
     方法重写:子类中出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致(或者是子父类)的

     方法重载:本类中出现的方法名一样,参数列表不同的方法。与返回值类型无关。

     方法重载可以改变返回值类型,只看参数列表

     this关键字和super关键字分别代表什么?以及他们各自的使用场景和作用。
    this: 代表当前对象的引用,谁来调用我,我就代表谁
     super:代表当前对象父类的引用
    this和super的使用
     * a:调用成员变量
     * this.成员变量 调用本类的成员变量,也可以调用父类的成员变量(本类中没有的情况下)
     * super.成员变量 调用父类的成员变量
     * b:调用构造方法
     * this(...) 调用本类的构造方法
     * super(...) 调用父类的构造方法
     * c:调用成员方法
     * this.成员方法 调用本类的成员方法,也可以调用父类的方法(本类中没有的情况下)
     * super.成员方法 调用父类的成员方法


    10:继承案例练习
    class Animal {
     private String color;
     private int leg;
     public Animal() {}
     public Animal(String color,int leg) {
     this.color = color;
     this.leg = leg;
     }

    public void setColor(String color) {
     this.color = color;
     }
     public String getColor() {
     return color;
     }

    public void setLeg(int leg) {
     this.leg = leg;
     }
     public int getLeg() {
     return leg;
     }

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

    class Cat extends Animal {
     public Cat() {}
     public Cat(String color,int leg) {
     super(color,leg);
     }

    public void catchMouse() {
     System.out.println("猫捉老鼠");
     }
    }

    class Dog extends Animal {
     public Dog() {}
     public Dog(String color,int leg) {
     super(color,leg);
     }

    public void watchHome() {
     System.out.println("忠犬看家");
     }
    }


    11:final关键字可以干什么?有什么特点?
    修饰类,类不能被继承
     修饰变量,变量就变成了常量,只能被赋值一次 (final 修饰的变量叫常量;一般会与public static共用)
     修饰方法,方法不能被重写

    12:final关键字的面试题?
     A:修饰局部变量
     B:初始化时机

    A:修饰局部变量
     基本类型,是值不能被改变
     引用类型,是地址值(引用)不能被改变,对象中的属性可以改变

    B:初始化时机
     显示初始化 (此时成员的默认初始化值0 是无效值)
     在对象构造完毕前即可(错误: 变量 num 未在默认构造器中初始化)

  • 相关阅读:
    C++ vector的用法
    flash Timer类使用
    Reactive native 项目创建失败如何处理
    React中的Statics对象
    web pack的使用事项
    Unable to resolve module LinkedStateMixin
    React Native学习笔记-1:JSC profiler is not supported.(转载)
    无意间发现我的博客园的年龄有11年了
    Jigloo 下载 安装 GUI
    Linux应用开发入门(转)
  • 原文地址:https://www.cnblogs.com/hmyhh/p/9358142.html
Copyright © 2020-2023  润新知