继承,重写,多态的了解

继承,重写,多态的理解

继承:将父类的方法复制给子类,减少重复代码.

 

父类是许多子类的共同点,比如 大学生,中学生,小学生都是学生.学生类是其余三个类的共同特点.( 类:具有相同的属性,即有共同特点.属性就是他们的共同点,这是主观上面的共同点)

 

声明格式

public class Student 

public class CollegeStudent extends Student


继承,重写,多态的了解
 

 

方法的重写:

子类继承了父类的某一个方法,但是需要改进,可进行重写,其方法名,参数都相同

Student.java

public void read(){

System.out.println("姓名"+name+"\t性别:"+sex+"\t学号"+num);

}

CollegeStudent.java(继承了student.java)

public void read(){

System.out.println("姓名:"+name+"\t学号"+num);

}

此时,CollegeStudent类的对象调用read方法是调用的后面一个read();

 

多态:同一个对象调用统一方法可能出现不同的结果

 

Student stu2=new CollegeStudent();            //(自动转换)

stu2.exam();                 //此时Student和CollegeStudent类都有exam方法,则会调用CollegeStudent类的exam();  这种行为成为多态

CollegeStudent stu4=new CollegeStudent();      //(将stu2强制转换为CollegeStudent)

stu4= (CollegeStudent)stu2;

 

 
继承,重写,多态的了解
 

 

示例程序

Student.java

 

public class Student {

int num;

String name;

String sex;

 

public Student (){

//System.out.println("Student");

}

//构造方法重写:提供多种定义对象的方法,比如直接创建新的对象顺便给出名字学号.

public Student(String nam,int n){

name=nam;

num=n;

}

//定义属性:共同的特征

 

 

public void setSex(String se){

sex=se;

}

public void setName(String se){

name=se;

}

public void setNum(int se){

num=se;

}

//定义方法:对象要做的事情

public void read(){

System.out.println("姓名"+name+"\t性别:"+sex+"\t学号"+num);

}

 

public void exam(){

System.out.println(name+"要考试//Student");

}

}

 

CollegeStudent.java

 

public class CollegeStudent extends Student{

 

public CollegeStudent(){

//System.out.println("CollegeStudent");

}

//方法的重写,方法名,参数都相同

public void read(){

System.out.println("姓名:"+name+"\t性别:"+sex+"\t学号"+num);

}

 

public void exam(){

System.out.println(name+"要考试");

}

}

 

 

Manager.java

 

 

public class Manager {

public static void main(String[] args) {

 

Student stu1=new Student("黄斌",13);

stu1.setSex("男");

stu1.read();

stu1.exam();

 

CollegeStudent stu=new CollegeStudent();

stu.setSex("女");

stu.setName("齐川逸");

stu.setNum(11);

stu.read();

stu.exam();

 

Student stu2=new CollegeStudent();

stu2.setSex("女");

stu2.setName("齐川");

stu2.setNum(11);

stu2.read();

stu2.exam();//调用的是CollegeStudent类的exam方法(多态),

 

CollegeStudent stu4=new CollegeStudent();

stu4=(CollegeStudent)stu2;

stu4.read();

stu4.exam();

 

}

}

 

运行结果

姓名黄斌 性别:男 学号13

黄斌要考试//Student

姓名:齐川逸 性别:女 学号11

齐川逸要考试

姓名:齐川 性别:女 学号11

齐川要考试

姓名:齐川 性别:女 学号11

齐川要考试