JAVA中类的继承的理解
- 格式:doc
- 大小:49.00 KB
- 文档页数:3
JAVA中类的继承的理解
Java类的继承可以是多层的,但不能是多头的。也就是说类只能继承一个类而不能继承多个类。好比一个人只能有一个爹,不能有多个爹,当然爹上面还能有爹。
类实现继承的格式:class子类名extends 父类名
类的继承有三方面的内容,一是父类变量与方法的继承,二是父类变量与方法的覆写或称之为重载,三是super与this的使用区别。
类的继承使用范例:
class Person
{
String name;
int age;
}
class Student extends Person
{
String school;
}
Public class TestPersonStudentDemo
{
public static void main(String[] args)
{
Student s = new Student();//实例化了Student类s
= “张三”; //访问Person类中的name属性
s.age = 25; //访问Person类中的age属性
s.school = “北京” ; //访问Student类中的school属性
System.out.println(“姓名:”++”,年龄:”+s.age+”,学校:”+s.school);
}
}
子类在继承父类中的方法与属性时,首先会执行父类中的构造方法,再执行子类中的构造方法。一般子类中隐含了super()语句(super主要的功能是完成子类调用父类中的内容)。
类的继承使用范例1:
class Person
{
String name;
int age;
//父类中的构造方法
public Person(String name,int age)
{
= name;
this.age = age;
}
}
class Student extends Person
{
String school;
//子类中的构造方法
public Student()
{
//在这里用super调用父类中的构造方法
super(“张三,25”); //明确调用父类二参数的构造方法
}
}
Public class TestPersonStudentDemo1
{
public static void main(String[] args)
{
Student s = new Student(); //实例化了Student类s
s.school = “北京” ; //为Student类中的school赋值
System.out.println(“姓名:”++”,年龄:”+s.age+”,学校:”+s.school);
}
}
super可以调用父类中的方法,也可以调用父类中的属性。
类的继承使用范例2:
class Person
{
String name;
int age;
public Person() //无参构造方法
{
}
public String talk()
{
return “我是:”++”,今年:”+this.age+”岁”;
}
}
class Student extends Person
{
String school;
public Student(String name,int age,String school) //Student子类的构造方法,构造时要提供三个参数
{
= name; //调用父类中的属性
super.age = age; //调用父类中的属性
System.out.println(super.talk()); //调用父类中的方法
this.school = school; //调用本类中的属性
}
}
Public class TestPersonStudentDemo2
{
public static void main(String[] args)
{
Student s = new Student(“张三”,25,“北京” );//实例化了Student类s,构造时要提供三个参数,否则会出现“构造函数Student()未定义的”错误System.out.println(“,学校:”+s.school);
}
}
覆写与重载(概念相似)
子类中的变量或方法,可以与父类中的一样,这时子类的变量与方法就“覆写”了父类的变量与方法,或称之为变量与方法的“重载”。
super与this最大的区别是,super调用的是父类中的变量或方法,当子类继承了父类中的变量或方法时,this和super的作用一样。当子类的变量或方法覆写了父类中的变量或方法时,由于覆写时子类和父类的变量名称或方法名称是一样的,这时super就会去调用父类中的变量或方法,而this只能调用子类中的变量或方法。当然明确为private类型的变量与方法还是不能调用的。