概述
1、为什么要继承?如何继承?继承到了什么?
比如我们定义了一个学生类,所有的学生都拥有一些特定的属性和方法。但如果这个系统应用于大学生的话,又会有许多的大学生类中特有的属性和方法。这时就不必在重新定义一个大学生类了,我们可以让他继承学生类。
首先我们先定义一个学生类:
package cjl.extend0926;
/**
* 学生类
* @author wyz
*
*/
public class Student {
public Student(){
}
/** 名字属性*/
public String name;
/**
* 设置名字的方法
* @param s 要设置为名字的字符串
*/
public void setName(String s){
name = s;
}
/**
* 学生学习的方法
*/
public void study(){
System.out.println(name+"在学习");
}
}
然后通过extends关键字让大学生类继承上面的学生类:
public class UNStudent extends Student{
/**
* 子类特有的方法
* 私有的属性和方法能够被继承到,但不能直接使用
*/
public void cet4(){
System.out.println(name+"是大学生,要考试四级!!");
}
/**
* 方法的重写
* 重写:子类重新实现父类中的方法
* 方法名,参数,返回值都一样,仅仅是方法体不一样
*/
public void study(){
System.out.println(name+"是大学生,在学习");
}
}
我们称UNSstudent为子类,Student叫UNStudent的父类,UNStudent中就自动具有了Student中定义的属性和方法了。
执行代码:
public static void main(String args[]){
//大学生对象
UNStudent stu2 = new UNStudent();
stu2.setName("李四");
stu2.study();
}
输出结果:
李四在学习
需要强调一点的是父类的构造方法不能够被子类继承。
2、自动转型和强制转型
自动转型指的是子类对象会自动的转化为父类类型,对象在调用父类的方法时,如果子类重写了父类的方法,调用的就是子类的实现,否则就调用父类的方法。
另外需要注意的几点:
1.子类特有的属性和方法,只能是子类类型的对象才调用
2.对象声明的是什么类型,就只能调用这个类(及父类)中定义的方法
3.一个类中的属性和方法,只能是这个类(及子类)的对象才能调用
如代码:
//自动转型
//子类对象的类型可以自动转成父类类型
Student stu3 = new UNStudent();
stu3.setName("王五");
//4.一个对象调用的方法是父类还是子类的,取决于对象本身的类型
stu3.study();
运行结果:
王五是大学生,在学习
强制转型指的是将父类类型的对象强制转化为子类类型。因此强制转型可能会发生逻辑错误。一个对象可以被强制转型,肯定是在前面某个地方被自动转型了。一个对象被自动转成父类类型后还想调用子类特有的方法,就必须强制转型。
代码:
UNStudent stu4 = (UNStudent)stu3;
stu4.cet4();
运行结果:
王五是大学生,要考试四级!!
3、方法的重写和重载
在上例中大学生和学生的学习方法应该是不一样的,所以有必要在子类中对父类的方法进行重写。重写就是保持方法的定义不变(包括方法名、参数、返回值),但方法内部实现同父类不同。
如上例中的public void study(){}方法。
如果子类中重写了父类的方法,子类的对象在调用时则调用的是子类的方法,否则则调用父类的。
方法的重载指的是在同一类中可以出现同名的方法,方法的参数、返回值及函数体不同。对象在调用时根据其所含参数及返回值类型调用相应的函数。
如:public int study(){}
public int study(int a){}
public void study(){}
4、多态的理解
多态性指的是由于继承和重写机制,相同的对象在调用相同的方法时,得到的结果可能不一样。
最后
以上就是拼搏烤鸡为你收集整理的java的继承和多态小结的全部内容,希望文章能够帮你解决java的继承和多态小结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复