Java基础3_面向对象下1

来源:互联网 发布:秦岭地形数据 编辑:程序博客网 时间:2024/06/06 00:28

/*

面向对象下

继承

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);

}

}

原创粉丝点击