实验室第二次周报

相比上周的基础语法,这周我主要学习了面对对象思想:

  1. 关于static关键字意为—“静态”:在类中,static表示的方法或者变量为该类所属的特性,而非对象所持有的,例如:当你改变了类中的一个成员变量的值时,那么它的所有创建的对象的成员变量都为该值。当你要访问用static修饰的成员变量或者方法时,用类名调用即可。static在java虚拟机中的编译顺序是优先于类的。
  2. package和import关键字:package在java中是用来表示并且可以用来创建文件夹的,通常是package+文件名。而import是用来导包:提前声明引用的类的位置。
  3. java中的四种访问权限修饰符:private, , protected ,public
    在这里插入图片描述
  4. 封装对象:在java中有一个原则就是尽量隐藏对象的信息(成员变量和方法),即需要private。
  5. this关键字:表示为当前对象。
    this的四个场景:
    1)解决成员变量和形参的二义性
    2)同类中实例方法间互调
    3)将当前对象作为参数传递给另一个方法
    4)将当前对象作为方法的返回值(链式方法编程)
    5)构造器重载的互调,this必须写在构造方法的第一行--------
    举个栗子: 注意调用构造器时应该是参数少的调参数多的,只需要写用的上的参数,其余参数赋默认初始化的值即可。
 class Friend{   
                    Friend(){
                       this(null,0);
                    }
                    Friend(String name){
                          this(name,0);
                    }
                    Friend(String name,int age){
                         this.name=name;
                         this.age=age;
                    }
}

6)static不能和this一起使用(例如不能在主方法里使用this)。

  1. 类的继承关系:(class a extends b{})继承是指一个类拥有另一个类的字段和方法,即子类与父类的关系。子类可以不用重复写。当你在引用对象(前提是有继承关系的类)并调用方法时,先从子类中寻找,再从父类中寻找。当然,并不是父类中的一切都满足于子类,所以子类可以覆盖父类的方法来实现自身的特点。但是当父类使用private修饰的部分和父类构造器子类是继承不到的。

  2. super关键字:表示的是当前对象的父类。可以用super访问到父类。
    在这里插入图片描述

  3. 隐藏问题(就近原则的原理):
    1)局部变量和成员变量同名,局部变量隐藏成员变量,使用this解决
    2)在继承关系的条件下(少见):子类存在与父类同名的成员变量,子类成员变量隐藏父类成员变量,使用super解决
    3)在继承关系的条件下(少见):子类存在与父类相同的静态方法----------------->静态方法不存在覆盖。

  4. 多态:前提是创建对象时使用父类;先检查父类的方法,再检查子类的方法。
    在运行的时候执行的是父类的方法,在底层按类执行而不是对象,而类是由编译的时候就决定的。
    编译类型<-----Animal a=new Dog();------->运行类型。

  5. final修饰符:(众多修饰符中,唯一可以修饰局部变量)
    1)final类:不能有子类
    2)final方法:该方法不能被子类覆盖:
    父类在构造器中调用的初始化方法
    父类的方法只能供子类调用,不能被子类继承
    3)final变量:
    基本数据类型:常量(public static final修饰),值不能再改变,只能赋值一次。
    引用数据类型:堆空间开辟的地址值不能改变,但所引用空间的内容可以被改变
    拓展:局部内部类只能访问final修饰的局部变量

  6. (abstract)抽象类和抽象方法:
    抽象类特点:
    1)抽象类不能创建对象
    2)抽象类可以不包含抽象方法,一旦包含,必须是抽象类
    3)抽象类构造方法不能私有化
    4)抽象类是不完整的
    抽象方法可以用在子类中调用,且方式不同,并且必须覆盖父类方法,若子类不覆盖,那么子类也声明为抽象类。
    抽象方法必须在抽象类中,且没有方法体只有方法声明,待子类进行实现.

猜你喜欢

转载自blog.csdn.net/weixin_43471422/article/details/89425625