类的继承、方法重写、自动转型
1、类的继承
在类与对象的总结中说过,所谓类就好比生活中的种类,一些具有
相同特征的事物的总称。而类的继承就像是一个种类的事物的延伸
或说繁衍出来的子类,子类具有父类所具有的所有属性以及方法,也
就是在Java编程语言中所说的子类继承父类的所有属性和方法。继承
的关键字:extends。还需注意的是Java中的继承是单继承。比如现在
我们建一个学生类:
public class Student{
//设置学生的属性
public String name;//姓名
public int scro;//学分
public String subject;
//设置学生的学习方法(构造方法)
public Student(String name,int scro){
this.name=name;
this.scro=scro;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setScro(int scro){
this.scro=scro;
}
public int getScro(){
return scro;
}
public void setSubject(String subject){
this.subject=subject;
}
public String getSubject(){
return subject;
}
//学习的方法
public void study(){
System.out.println(name+"在学习,学分是"+scro);
}
}
接下来建一个大学生类,让他继承学生类:
public class UStudent extends Student{
//该类继承自学生类,所以学生类中的
//三个属性都已经具备
//可以给其添加一个科目属性
//构造方法
public UStudent(String name,int scro){
//调用父类的构造方法
super(name,scro);//super关键字是在子类中调用
//父类的方法
}
//方法的重写:访问修饰符 返回值类型 方法名 参数类型
//个数顺序必须相同,但他们具体实现({}中的代码)不同
public void study(){
System.out.println(name+"正在学习"+subject+"学分是"+scro);
}
}
关于子类所能继承父类中的那些方法和属性与其所附带的
访问修饰符有关:
访问修饰符 类中 同包中 有继承关系不同包中 不同包
public 可以 可以 可以 可以
protected 可以 可以 可以 不可以
默认的 可以 可以 不可以 不可以
private 可以 不可以 不可以 不可以
不难发现,当访问修饰符为public时调用权限与路径无关。
自动转型
建一个执行类:
public class Text{
public static void main(String []args){
//自动转型:用父类声明一个对象名 用对象名指向子类对象。
Student stu=new UStudent("张三",2);
//本质上是子类对象,只是当是父类对象使用
stu.setSubject("第二门外语");
stu.study();
}
}
自动转型作用:把子类没有的而父类有的方法实现自动调用。调用时编译器会先在子类中寻找
是否有重写了的该方法,没有时才会调用父类中的方法。
梣梓
2014、09、26