2021-04-23继承

父类:子类的名字extends父类的名字.

父类:

public class Uncle {

    private String name;

    private int age ;

    public void faHongbao() {

        System.out.println("舅舅发红包");

    }

}

子类一:

public class UncleOne extends Uncle {

    public UncleOne(){

        super();

        System.out.println("UncleOne 构造方法");

    }

    public void chouyan(){


        System.out.println("大舅喜欢抽烟");

    }

    public void faHongbao(){


        System.out.println("大舅家道中落,发不起红包了该送祝福了");

    }

}

子类二:

public class UncleTwo extends Uncle {

public void hejiu() {

    System.out.println("二舅喜欢喝酒");

}

// 方法的重写 复写 覆写

public void faHongbao() {

    System.out.println("二舅不仅发红包,还送茅台");

}

}

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

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

3 除了复写,子类可以扩充父类没有的方法

**优点:**1 实现代码的复用

2 有利于子类代码的扩展多重继承 不允许 语法错误多重继承public class Temp extends UncleOne , UncleTwo{}多层继承:public class Uncle {    private String name;    private int age;public void faHongbao () {    System.out.println("舅舅发红包");}  }public class UncleOne extends Uncle {public void chouyan() {    System.out.println("大舅喜欢抽烟");}public void faHongbao() {    System.out.println("大舅家道中落,发不起红包了,该送祝福了");}

}

public class UncleOneSon extends UncleOne{

public void faHongbao () {

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

}

### 类继承的加载顺序:

1.先加载父类,再加载子类。

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

## final :最终的  ,最后的。

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

**1.final修饰的变量值不能发生修改PI = 3.1415**

**修饰基本数据类型,其值不能发生改变,修改引用数据类型,例如数组,数组中的值可以发生修改,但是数组名不能指向新的空间。**

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

**3.final修饰的类不能被继承。**

测试类

public class Demo {

public static void main(String[] args) {

UncleOne uncleOne =new UncleOne();

        uncleOne.faHongbao();

        //uncleOne.chouyan();

        UncleTwo uncleTwo =new UncleTwo();

        uncleTwo.faHongbao();

        uncleTwo.hejiu();

      /* UncleOneSon uncleOneSon = new UncleOneSon();

uncleOneSon.faHongbao();*/

        new UncleOneSon();

    }

}

你可能感兴趣的:(2021-04-23继承)