一、父类、子类和继承
通过继承父类创建子类。。在父类中,被private修饰的属性和方法不能被子类继承
package 测试;
class Student {//父类
String studentNo,name;
Student(String sn,String nm)//父类构造器
{
studentNo=sn;
name=nm;
}
void showInfo()
{
System.out.println("学号:"+studentNo);
System.out.println("姓名:"+name);
}
}
class Collegian extends Student{//子类
String major;
Collegian(String sn,String nm,String mj)//子类构造器
{
super(sn,nm);//只能用super指代父类构造器的名字,不能用父类构造器的名字。在构造器中没有this时,对super的调用必须在第一条
major=mj;
}
void showInfo()
{
super.showInfo();
System.out.println("专业:"+major);
}
}
class sttext{
public static void main(String args[])
{
Student st=new Student("12345","袁宝贝");
st.showInfo();
Collegian cst=new Collegian("23456","张佳佳","计算机");
cst.showInfo();//方法覆盖:在子类中定义了和父类中同名的方法,且方法的参数和返回类型完全一致时,通过子类对象句柄cst访问showInfo()时,子类的同名方法优先于父类的同名方法
}
}
二、super的使用
1、调用父类中被覆盖的方法。super.方法名(参数)
2、调用父类的构造器。super(参数)
3、访问父类中被隐藏的成员变量(在子类中定义的成员变量与父类中的成员变量重名)。super.成员变量名
4、只能用super指代父类构造器的名字,不能用父类构造器的名字。在构造器中没有this时,对super的调用必须在第一条
三、包
相同的类放在一个包中,不同的程序文件内的类也可以同属于一个包,只要在这些程序文件前都加上同一个包的说明即可。包各层之间用"."分隔。同一个包内的类可以相互调用,并且不用import
1、创建包
package pkg1[.pkg2[.pkg3[]……];
程序中如果有package语句,该语句一定是源文件中的第一条执行语句,它的前面只能有注释或空行。一个文件中最多只能有一条package语句。当编译并将源文件存盘后,要通过编译生成包;
package sttext.pck;//创建sttext项目下的pck包
public class Student{
public String studentNo,name;
public Student(String sn,String nm)
{
studentNO=sn;
name=nm;
}
public void showInfo() {
System.out.println("学号:"+studentNo);
System.out.println("姓名:"+name);
}
}
2、加载包:
java中通过import语句加载包中的类
import pkg1[.pkg2[.pkg3[]……].classname|*;
。。当需要从同一个包中加载一个类时,则在包名后跟着相应要加载的类名即可;
。。若需要从同一个包中加载多个类时,可以在包名后面跟“*”指代包中所有的类。
。。如果要从不同包中加载多个类,就需要用多个import语句,即一条import语句只能加载一个包的类
import sttext.pck.Student;//加载sttext项目下的pck包中的Student类
class tt{
public static void main(String args[]) {
Student s=new Student("12345","袁宝贝");
s.showInfo();
}
}