面向对象(Day10)

This

       this是每个对象中保存自身内存地址的一个引用类型变量

        应用:

        1.在成员方法/构建方法中,使用this.变量,来区分同名的成员变量和局部变量

        2.在构造方法中,可以重载调用当前对象的其他构造方法(必须在构造方法第一行)

        3.return this 可以做到链式调用

        区分成员变量和局部变量

 

面向对象(Day10)_第1张图片

         重载调用构造方法

         链式调用

        

面向对象(Day10)_第2张图片

        注意:静态方法中无法调用非静态变量this。

Static

         static是静态修饰符,用于区分静态和成员属性

         应用:

         1.static修饰的变量是静态变量

         2.static修饰的方法为静态方法

         3.static语句修饰的语句块/代码块是静态语句块

        静态语句块

        static{]可以看作一个没有名字的方法,不能复用,只能执行一次。当程序加载时,会自动调用静态语句块,并且整个类生命周期中只执行一次,访问一个类静态属性时会加载该类。由于静态语句块最先执行,并且只执行一次,所以适合做一些类初始化相关工作

       

        实例语句块

        实例语句块可以看作没有名字的成员变量,只有一对{},每次创建对象时,实例语句都会被执行,并且在构造方法之前执行。

        顺序:静态->main->实例->构造

 

面向对象(Day10)_第3张图片

封装 

       包机制:

        可以将文件分类管理,另外可以解决命名冲突的问题。注意package限制的是class文件的存放位置,跟Java文件无关,

       带有package的代码应该这样编译和运行:

       编译:javac -d 生成路径 java源文件路径

                  javac  -d  ./  -encoding utf-8  xxxx.java

       运行:java  包名.类名

                  java com.Test

       import:

       import用于导入用到的其他类,在当前类中可以直接写类名进行调用,语句中可以有多个,但是必须在package语句之下,class语句之上,如果用到的是Java.lang.*类,则不需要导入,因为Java.lang包下是核心类

       权限控制:

  

面向对象(Day10)_第4张图片

继承 

      继承是从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并且还能扩展新的属性和行为。在Java中只支持单继承,即一个类只能由一个父类,但是一个父类可以有多个子类。Java中继承是可以传递的,引入继承可以提高代码的复用性。

       语法:class 类名 extends 父类名 {}

      注意:当一个类没有显示继承另一个类的时候,则默认继承Java.lang.Object, Object是Java提供的根类,私有化属性是不能被继承的

      应用:代码复用,方法覆写,多态

Super

      super保存了父类的特征,可以理解为父类引用对象

 

面向对象(Day10)_第5张图片

       应用:

       1. 在子类成员方法中/构造方法中,用于区分父类与子类同名的成员变量

       2.在子类构造方法中,super(....)调用父类的构造方法,但是必须在子类构造方法的第一行

       注意:如果在子类构造方法中,没有县市出现this()和super()的话,默认第一行有super()调用父类无参构造。且this()和super()不能同时出现在构造方法中。构造方法私有化后不能再被继承。

       区分父子类同名的属性

                 

面向对象(Day10)_第6张图片

 覆写/重写

        覆写/重写是对继承的方法进行重新编写。

        应用场景:当父类的功能无法满足子类需求的时候,子类需要根据自己的需求进行重写

        覆写/重写的要求:

         1.必须是有继承关系的体系中

         2.方法名,返回值,参数列表,都必须相同

         3.覆写的方法不能比原方法更低的访问权限

         4.不能比原方法更广泛的异常

         5.覆写特指成员方法,只有成员方法可以覆写

       覆写的目的:为了满足需求、减少错误、访问权限越来越广

面向对象(Day10)_第7张图片

       注意:@Override注解,是一种源码注解,生成class文件后就会被删除,该注解只是一种检查机制,当编译时,会检查该方法是否符合覆写的方法,如果不符合,会提醒程序员报错。

你可能感兴趣的:(java,开发语言)