美文网首页
Java基础笔记总结(4)-面向对象编程(构造方法,继承,thi

Java基础笔记总结(4)-面向对象编程(构造方法,继承,thi

作者: 吵吵先生 | 来源:发表于2019-01-14 18:34 被阅读0次

    构造方法:给数据的对象进行初始化

    注意:

    1、方法名和类名相同

    2、没有返回值类型,也不需要void

    3、没有具体的返回值类型return(return;)

    4、构造方法不能使用对象进行调用 P.Person()是错误,在创建对象的时候,系统帮我调用构造方法

    构造方法的重载

    “方法名相同,与返回值类型无关,至于参数类型有关”

      若没有给出构造方法,系统自动给提供一个无参构造方法,若给出了构造方法,系统不会自动给出,需要自己提供

    ==============================================================

    创建对象的步骤,

    1、将编译文件加载进入内存

    2、声明类引用, 用压栈将Main压入栈 在栈中创建声明类

    3、在堆内存中new 出一块空间,并把地址付给栈

    4、将构造方法压入栈执行,并修改参数

    ==============================================================

    static 关键字

    方法区中的编译文件有两块区域:静态区域和非静态区域

    1、随着类的加载而加载

    2、优先于对象存在的

    3、被所有的对象所共享

    如果某个成员变量被所有对象共享,就可以定义为静态的

    4、可以通过类名直接调用

    注意事项:

    1、静态方法中没有this关键字,因为静态随着类的加载而加载,this是随着对象的创建而存在。静态比对象先存在,因此不能使用this关键词

    2、静态方法只能静态成员变量和静态成员方法

    3、 非静态方法既可以访问静态成员变量,也可以访问非静态成员变量,既可以访问静态成员方法,也可以访问非静态成员方法

    主方法的格式:

    public  static void main(String[] args)

    public:被jvm调用,权限足够大

    static:被jvm调用,不需要创建对象,直接调用即可

    void:被Jvm调用不需要任何返回值

    main:只有这样写被能被jvm识别

    String[] args 以前是用来接收键盘录入的(现在都是用Scanner)

    -----------------------------------------------------------------------------------------------------------------

    使用静态类做一个工具类 直接在方法上创建static ,省去创建对象的力气

    如果一个类中所有方法都是静态的,需要多做一步,私有构造方法,防止私自创建对象

    ====================================================================

    文档说明书

    类名前要增加Public

    /**

    这是一个数组工具类,里面封装了查找数组最大值等方法

    @author xxx

    @version v1.0

    */

    在每个方法上

    /**

    描述相关方法

    @param 参数名 参数类型

    @return 返回数组中的最大值

    */

      编译java说明书用javadoc -d api -version -author -类名

    -------------------------------------------------------------------------------------------------------------------

    随机数的使用 Math.random() 返回一个大于等于0.0,小于1.0的double值,可以使用强制类型转换实现 (int)(Math.random()*100)+1

    -------------------------------------------------------------------------------------------------------------------

    面向对象的代码块

    用大括号括起来的部分,根据位置和声明不同可以分为

    局部代码块:在方法中出现,限定变量的生命周期,及早释放,提高内存利用率,除了括号变量就会释放掉

    构造代码块(初始化块):在类中方法外出现,多个构造方法中相同的代码存放在一起,每次创建对象都会调用构造代码块执行,并且在构造方法前执行

    静态代码块:在类中方法外出现,加Static修饰,用于对类初始化,在加载过程中执行,并且只执行一次操作(优先级高于main)

    同步代码块:多线程

    ---------------------------------------------------------------------------------------------------------------------

    继承:

    优势:提高代码的复用性

            提高代码的维护性

            让类和类之间产生了关系,是多态的前提

    弊端:类的耦合性增强了(耦合是类与类之间的关系,内聚是类完成事物的能力)

    this 和super的区别

    this 代表当前对象的引用,调用本类的成员变量,也可以调用父类的成员变量,但是就近原则,有子类不用父类

    super 调用父类的成员变量  调用super()必须写在子类构造方法的第一行,否则编译不通过。

    super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。

    this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。 尽管可以用this调用一个构造器,但却不能调用两个。

    this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。

    从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。

    创建子类的构造方法时,要先调用super(),去执行父类的构造方法

    1、jvm调用main方法,main进栈

    2、会先将父类编译文件,和子类编译文件分别加载进内存中,再创建对象

    3、当父类编译文件加载至内存,父类的静态代码块会随着父类编译文件一起加载

    4、当子类编译文件加载至内存,子类的静态代码块会随着子类编译文件一起加载

    5、先输出父类静态代码块 在输出子类静态代码块

    6、运行子类构造方法,因为java是分层初始化,先初始化父类,再初始化子类,固先运行父类构造,但是在执行父类构造时,发现父类有构造代码块,构造代码块优先于构造方法执行

    7、第三个输出父类构造代码块,第四个输出父类构造方法

    8、第五个输出子类构造代码块,第六个输出子类构造方法

    --------------------------------------------------------------------------------------------------------------------

    继承中的成员方法关系:

    子类方法可以调用父类方法,同名方法的话,优先调用子类方法,若要调用父类方法,使用super.

    方法重写,子父类出现了相同方法

    注意事项:

      1、父类中私有方法不能被重写

      2、子类重写父类方法,访问权限不能更低,最好一致

      3、父类中的静态方法,子类也必须通过静态方法重写(静态只能覆盖静态)----》不算是方法重写

    -------------------------------------------------------------------------------------------------------------------

    Override 和 Overload区别,Overload能改变返回值类型吗?

    Overoload可以改变返回值类型,只看参数列表,其中重载方法名一样,参数列表不一样,和返回值类型无关

    Override 子类和父类方法名一模一样,返回值也一致

    --------------------------------------------------------------------------------------------------------------------

    final关键字

    特点:

    1、修饰类,类不能被继承

    2、修饰变量,变量变为常量且只能被赋值一次

    3、修饰方法,方法不能够被重写

    补:常量命名规范,多个单词采用下划线隔开,一个单词使用全大写字母

    先写Static 再写Final

    注意 基本数据类型:值不变

          引用数据类型:地址值不能改变,对象中的属性可以改变(不可以再new 但是可以修改属性值)

    final修饰初始化变量的时机 1、显示初始化 2、在对象构造完毕前即可

    final必须是有赋值的变量,若没有赋值则有问题,即默认初始化值是无效值

    相关文章

      网友评论

          本文标题:Java基础笔记总结(4)-面向对象编程(构造方法,继承,thi

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