多态

继承 : extends

语法 子类的名字 extends 父类的名字 

父亲
```
public class Uncle {
        private String name ;
        private  int age ;

    public void Hongbao() {
            System.out.println("舅舅要发红包");
    }
}
```

 子类二:
```
package edu.xcdq;

public class UncleOne extends  Uncle {
    public void chouyan(){  
        System.out.println("大舅抽烟");
    }
    public void Hongbao(){
        System.out.println("大舅家道中落,发不起红包,该送祝福了");
    }
}

 ```

子类二 :

1 子类能够继承到父类所有的不是私有的属性 和 方法 

 2 子类能够复写父类的方法 如果没有复写,调用的是父类的方法 , 子类一旦复写,优先调用复写后的子类方法

 优点:
 1 实现代码的复用 

 2 有利于子类代码的扩展

 多成继承
 ```
public class Uncle {
    private String name ;
    private  int age ;

    public void Hongbao() {
        System.out.println("舅舅要发红包");
    }
}
 public class UncleOne extends  Uncle {
    public void chouyan(){
        System.out.println("大舅抽烟");
    }
    public void Hongbao(){
        System.out.println("大舅家道中落,发不起红包,该送祝福了");
    }
}

package edu.xcdq;

public class UncleOneSon extends  UncleOne {

    public void Hongbao(){
        System.out.println("大舅的儿子厉害了 ,接着发红包");
    }
}

 ```



类继承的加载顺序

先加载父类,再加载子类

祖先类的构造方法最先执行,祖先类最先被创造出来,其次是父类,最后是子类

在构造方法中会隐性的调用super()超类 父类地无参构造方法




final  最终的 最后的

被final修饰的成员不可以被改写

1final 修饰的变量值不能发生修改 pl = 3.1415 
修饰基本数据类型, 其值不能发生改变,修改引用数据类型,例如数组 ,数组名不能指向新的空间

 2 final 修饰的方法不能被重写

 3 final 修饰的类 不能被继承 





    多态

一个父类有多个子类

把子类的对象赋值给父类的过程叫做向上转型

把父类的对象赋值给子类的过程叫做向下转型

语法:

正常语法:

类名  对象名 = new 类名();

向上转型

 子类类型 对象名 = new 子类的对象 

向下转型 :

 子类类型 对象名 = (子类类型 ) 父类的对象 

   //向上转型
        UncleOne uncleOne1 = new UncleOne();
    uncleOne1.faHongbao();

    UncleTwo uncleTwo2 = new UncleTwo();
        uncleTwo2.faHongbao();

     //向下转型
   Uncle uncle = new Uncle();
       UncleOne temp = (UncleOne) uncle;


    instanceof     判断引用类型是否一致
    
判断对象是否是一个类的实例(具体的对象)
package com.company;

public class Demo02 {
    public static void main(String[] args) {
        UncleOne dajiu = new UncleOne();
        ganHuo(dajiu);

        UncleTwo erjiu = new UncleTwo();
        ganHuo(erjiu);
    }
    public static void ganHuo( Uncle uncle ) {
        if (  uncle instanceof UncleOne ) {
            System.out.println("出门外干活");
        }else if (uncle instanceof UncleTwo) {
            System.out.println("在室内干活");
        }else {
            System.out.println("传进来的不是舅舅,老太太没办法指使");
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容