2021-04-22

笔记

继承

子类继承父类的功能 extends 父类的名称

例 人---》男人 、女人------》经理

父类:舅舅

package edu.xcdq.demo;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/22 16:28
 */
public class Uncle {
    private String name ;
    private int age ;
    // getter   setter
    public void setName (String name){

        this.name = name ;
    }
    public String getName(){

        return name ;
    }
    public void setAge(int age){

        this.age = age ;
    }
        public int getAge(){

        return age ;
        }
        // 发红包
    public void fahongbao(){
        System.out.println("舅舅再发红包");
    }
}

子类:大舅

package edu.xcdq.demo;

import edu.xcdq.demo.Uncle;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/22 16:33
 */
public class UncleOne extends Uncle {

    public void chouyan(){

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

子类:二舅

package edu.xcdq.demo;

import edu.xcdq.demo.Uncle;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/22 16:34
 */
public class Uncletwo extends Uncle {
    public void deinkWine(){

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

子类只能继承一个父类,不能继承多个父类 多重继承

//错误代码
public class Uncletwo extends Uncle ,Uncleone{

}

子类 多层继承

//多层继承
package edu.xcdq.demo;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/22 17:05
 */
//多层继承
public class UncleOneSon extends UncleOne{
}

在继承中类加载的顺序

先创建父类,在创建子类

父类的构造方法先于子类构造方法的调用

public class UncleOne extends Uncle {
    public UncleOne(){
        super();  //调用父类的构造方法
        System.out.println("子类大舅的构造方法被创建");
    }

方法的复写(覆写)override

  @Override
    public void fahongbao(){
        System.out.println("大舅穷了,红包没了");
    }

如果子类没有复写父类的方法,调用的是父类的

如果复写了父类的方法,在调用是优先调用子类复写后的方法

要求:

1、方法的签名完全一致

2、方法体不同

Final

final Uncle uncle1 = new Uncle();
        uncle1.setName("修改前的名字");
        System.out.println(uncle1.getName());

修饰的内容不可以发生改变

修饰的是基本数据类型,其值不可以发生改变

修饰的是引用数据类型,引用的地址不能发生改变(不能指向新的空间),但原本引用的空间中的值是可以发生改变

Demo

package edu.xcdq.demo;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/22 16:36
 */
public class Demo {
    public static void main(String[] args) {
        UncleOne longfei = new UncleOne();
        longfei.fahongbao();
        longfei.chouyan();

        Uncletwo uncletwo = new Uncletwo() ;
        uncletwo.fahongbao();
        uncletwo.deinkWine();

        final Uncle uncle1 = new Uncle();
        uncle1.setName("修改前的名字");
        System.out.println(uncle1.getName());
    }
}

Uncle

package edu.xcdq.demo;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/22 16:28
 */
public class Uncle {
    private String name ;
    private int age ;
    // getter   setter
    public void setName (String name){

        this.name = name ;
    }
    public String getName(){

        return name ;
    }
    public void setAge(int age){

        this.age = age ;
    }
        public int getAge(){

        return age ;
        }
        // 发红包
    public void fahongbao(){
        System.out.println("舅舅再发红包");
    }
    public Uncle(){
        System.out.println("父类的无参构造方法被调用,父类被创建了");
    }
}

Uocleone

package edu.xcdq.demo;

import edu.xcdq.demo.Uncle;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/22 16:33
 */
public class UncleOne extends Uncle {
    public UncleOne(){
        super();  //调用父类的构造方法
        System.out.println("子类大舅的构造方法被创建");
    }

    public void chouyan(){

        System.out.println("大舅喜欢抽烟");
    }
    @Override
    public void fahongbao(){
        System.out.println("大舅穷了,红包没了");
    }
}

Uncletow

package edu.xcdq.demo;

import edu.xcdq.demo.Uncle;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/22 16:34
 */
public class Uncletwo extends Uncle {
    public void deinkWine(){

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

UncleOneSon

package edu.xcdq.demo;

/**
 * @qvthor liuwenzheng
 * @date 2021/4/22 17:05
 */
//多层继承
public class UncleOneSon extends UncleOne{
}

你可能感兴趣的:(2021-04-22)