Java基础3

    技术2022-05-13  9

    /*

    面向对象下

    继承

    extends,类的继承

    1.通过继承可以简化类的定义

    2.Java只支持单继承,不允许多重继承

    3.可以有多层继承,即一个类可以继承某一个类的子类,如类B继承类A,类C又可以继承类B,那类C也间接继承了类A

    4.子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法.在子类的构造方法中可使用语句super(参数列表)调用父类的构造方法

    5.如果子类的构造方法中没有显式地调用父类构造方法,也没有使用this关键字调用重载的其它构造方法,则在产生子类的实例对象时,系统默认调用父类无参数的构造方法.

    */

    /*

    子类对象实例化过程

    */

    /*

    final关键字 表明该类是顶级类, 不可继承

     

    */

    class Person

    {

    public static final String x="abc";//要么在定义的时候赋值 ,要么在"每一个"构造函数中赋值

    public String name="unknown";//private就不能在子类中访问

    public int age=-1;

    public Person()

    {

    //x="abc";

    //父类中不会自动产生这样一个构造函数,必须自己定义一个构造函数

    }

    public Person(String name,int age)

    {

    //x="abc";

    this.name=name;

    this.age=age;

    }

    void getInfo()

    {

    //x="abc";// 无法为最终变量 x 指定值

    System.out.println("name="+name+",age="+age);

    }

    }

    class Student extends Person

    {

    public String school="unknown";

    public Student()

    {

    super();//调用父类中无参数的构造函数

    //子类中系统会自动产生的一个构造函数

    //super("zhangsan",15);

    }

    public Student(String name,int age)

    {

    super(name,age);

    }

    public Student(String name,int age,String school)

    {

    this(name,age);

    this.school=school;

    //super.getInfo();

    }

    public void study()

    {

    }

    public void getInfo()

    {

    System.out.println("school="+school+".");//",name="+name+",age="+age);

    super.getInfo();

    }

    }

    class TestStudent

    {

    public static void main(String[] args)

    {

    Student st=new Student("zhangsan",20,"清华大学");

    /*st.name="zhangsan";

    st.age=20;*/

    st.getInfo();//调用的是子类中的构造函数,而不是父类中的

    System.out.println(Float.MAX_VALUE);

    }

    }


    最新回复(0)