复习第二天继承特性

static关键字

static关键字 : 状态修饰符 -> 静态的 
​
作用: 是用来修饰成员的 (成员变量和成员方法)
    
static修饰的成员具备的特点:
        1. 被static修饰的成员被所有对象共享
        2. 被static修饰的成员不再属于对象,属于类
        3. 被static修饰的成员可以直接使用类名调用
        4. 被static修饰的成员随着类的加载而加载,优先于对象加载的

静态的访问特点

静态成员变量 静态成员方法 非静态成员变量 非静态成员方法
非静态成员方法
静态成员方法 X X
静态虽好,但是只能访问静态! -> 静态只能访问静态!!
    
为什么静态只能访问静态?? 加载时机问题
    静态成员是随着类的加载而加载 -> 早出现的东西
    非静态成员是随着对象的加载而加载 -> 晚出现的东西
    
非要在静态方法里访问非静态成员!    
    创建对象,使用对象调用非静态成员即可
    
static修饰的方法中就不可以使用this关键字!    

静态的使用场景

静态的使用场景 : 工具类
​
工具类的编写步骤:
    1. 定义一个类 : 类名叫 XxxxUtils -> Xxxx指得是完成的功能
    2. 私有无参构造方法,并不提供任何其他的构造方法 -> 治疗手贱的!
            Do not let anyone instance this class!!!
    3. 把类中所有的成员方法和成员变量全部用 static 修饰            
  //需求: 自己编写一个属于自己的数组操作的工具类!!  
    
JDK 提供的 Math 数学操作的工具类 
    static double E : 自然对数的底数
    static double PI : 圆周率
    
    static int abs(int a)  : 求一个数的绝对值
    static double cbrt(double a)  : 求a的立方根 
    
    static double ceil(double a)  : 天花板 -> 向上取整
    static double floor(double a) : 地板 -> 向下取整
    static long round(double a)  : 四舍五入
    
    static int max(int a, int b)  : 求2个数的较大值
    static int min(int a, int b)  : 求2个数的较小值
     
    static double pow(double a, double b) : 求a的b次幂 
    
    static double random() : 生成一个随机数 -> [0,1.0)

继承特性

继承的本质 : Java中 类 与 类 之间的关系;(Java中类和类只有继承关系或者没关系)
    //子类 继承 父类
​
继承的特点:
    1. 子类继承父类,可以使用父类中所有非私有的成员 (成员变量和成员方法) -> 父爱如山
    2. Java中继承关系 : 单一继承,多层继承 -> 一个儿子只能有一个亲爹,亲爹自己也可以有自己的亲爹
    3. 一个父类可以有多个子类 -> 一个爹可以有多个儿子
    4. 父类对象坚决不会使用子类的成员 -> 父亲是渣男,不知道有这个子类
    5. 如何一个成员子类中有,父类中也有,子类对象要使用的话,会优先使用子类自己的 -> 子类孝顺
    ***6. 子类要加载,优先加载父类 -> 先有爹再有儿子
    7. 继承关系下,一定是子类对象的功能多-> 后续要创建对象优先创建子类对象!, 子类功能多,子类可以调用父类非私有的方法以及自己的方法
    8. Java中所有的类都直接或者间接的继承于 Object //如果一个类没有父类,默认继承 Object
            object 类 : 超类,根类,基类

继承的格式

继承的格式 : extends
    //父类的父类
    public class Ye /*extends Object*/{
        
    }
    //父类
    public class Fu extends Ye{
        
    }  
​
    //子类
    public class Zi extends Fu{
​
    }

继承关系下成员访问问题

继承关系下成员变量的访问问题

        a. 在子类的方法内访问:
            1. 子类可以使用父类所有非私有的成员变量
            2. 子类访问和父类同名的成员变量优先使用子类自己的 -> 变量访问的就近原则
                就近原则 : 局部 < 本类成员 < 本类父类成员
                强制访问本类成员位置上的变量 :  this.变量名
​
        b. 在父类的方法内访问  : 父类只能访问父类自己和父类父类的成员
        c. 在第三方类中访问 :
            1. 子类对象只能访问子类自己的和父类非私有的,如果子类有父类也有,只能访问子类自己的
            2. 父类对象只能访问父类自己和父类父类的成员
​
        总结:
            子类中访问 : 就近原则
            第三方类中访问 : 子类对象访问自己的和自己父类的,自己有的优先访问自己的

继承关系下成员方法的访问问题

     a. 在子类中访问
            可以访问子类自己的,父类非私有的,如果子父类有一样声明的方法优先访问子类自己的
            如果非要访问父类成员位置上的同名方法 : super.方法名(实参);
        b. 在父类中访问 : 父类只能访问父类自己和父类父类的成员方法
        c. 在第三方类中访问:
             1. 创建子类对象 : 自己有访问自己的
             2. 创建父类对象 : 父类对象只能访问父类自己和父类父类的成员方法
             
 总结: 继承关系下方法的访问特点是 真实的对象是谁就执行谁的方法             

继承关系下构造方法的访问问题

方法的重写

方法的重载: overload -> 用的多,写的少 (方便别人的)
    1. 在同一个类中
    2. 同名方法
    3. 形参列表不一样 (类型,类型顺序,个数)
    4. 与返回值无关
    5. 与形参名无关
    
方法的重写: override -> 方法的覆盖 -> 用的多.写的多 
    1. 必须有继承/实现关系 -> 不在同一个类中
    2. 子类重写父类的方法要求: 子类重写的方法声明必须和父类一模一样!!
    3. 可以不一样的是 : 方法体
    --------------以上是百分之99的情况--------------------------
    方法重写中可以不一样的:
        1. 形参的变量名
        2. 方法的访问权限修饰符可以不一样 : 子类重写的方法访问权限修饰符要 >= 父类方法的权限修饰符
            public > protected > 默认不写 > private
        3. 子类重写方法的返回值类型可以不一样
            a 父类方法返回值是 void  子类必须是 void
            b 父类方法返回值是 基本数据类型 子类必须一样
            c 父类方法返回值是 引用数据类型 
                子类的方法返回值类型 可以是 父类方法返回值类型的 子类或者同类
                    Object > Number > Integer
                    
 static 方法 是没有重写概念的!!                   

九阳神功

九阳神功 : 内力
    
    
九阳神功使用前提 : 必须要看到 --> 对象.
    对象.成员变量
    对象.成员方法
    对象.静态成员方法
    
 公式的使用步骤
    1. 只要看到对象调用 XXX -> 可以用公式
    2. 找到对象创建的语句 ->  类名 对象名 = new 类名(); //找到对象是如何创建的
    3. 看对象在干嘛 
             对象.成员变量 : 编译看左边, 运行看左边
             对象.成员方法 : 编译看左边, 运行看右边
             对象.静态成员方法 : 编译看左边, 运行看左边
   
  左边 : 创建对象语句左边的类  
  右边 : 创建对象语句右边的类 
 编译看 : 作用是用来为代码调错的 -> 如果代码没有出错,就不需要编译看`
    Java语句的原则是 : 对象所属的类或者其父类中如果没有这个成员是不可以调用的
    
 运行看 : 作用是用来说程序结果的
    运行看的类是哪一个那就执行那一个类中的代码

猜你喜欢

转载自blog.csdn.net/m0_70793154/article/details/127166227