package com.loyer.java.day3;

public class Person        //主类 创建一个父类
{
    static void prt(String s)        //父类里的主方法
    {
        System.out.println(s);
    }
    Person()        //父类里默认无参的构造方法
    {
        prt("这是父类里的默认的构造方法");
    }
    Person(String name)        //有参的构造方法
    {
        prt("这是父类里有参的构造方法"+name);
    }
    static class Chinese extends Person        //创建一个子类来继承父类
    {
        void Person()        //方法覆盖 重写父类里无参的构造方法
        {
            System.out.println("方法覆盖");
            prt("这是个什么鬼");        //改变父类里的方法体
        }
        Chinese()        //默认的构造方法
        {
            super();        //调用父类的无参构造方法
            prt("这是子类里无参的构造方法");    
        }
        Chinese(String name)        //创建有一个参数的构造方法
        {
            super(name);        //这是调用父类有参的构造方法
            prt("这是子类里有参的构造方法"+name);
        }
        Chinese(String name, int age)
        {
            this(name);        //这是引用本类有一个参数的构造方法
            prt("这是调用父类具有相同形式参数的构造方法:"+age);
        }
        public static void main(String[] args)
        {
                Chinese ch = new Chinese();        //创建对象来调用子类默认构造方法
                ch = new Chinese("傻蛋");        //使用子类有参的构造方法
                ch = new Chinese("傻蛋",24);        //调用父类的有一个参数的构造方法以及子类的一个参数的构造方法 另外引用了子类里两个参数的构造方法
                ch.Person();
                Person p = new Person();
                p = new Person();
                p = new Person("傻媳妇儿");
                
        }
    }
}