继承可以使用父类的所有方法,但是如果继承的是抽象类的话,需要复写抽象类中所有的抽象方法,继承在需要用到父类方法且需要有自身特有方法的情况下使用,比如,有一个类Person,里面有个有个方法getName,现在又有个Student类,需要用到getName和getCourse方法,如果不继承,就需要再写一个方法getName,如果继承Person,就可以直接使用getName方法,再写一个getCourse即可,代码如下
class Person
{
String name;
Person(String name)
{
this.name = name;
}
String getName()
{
return name;
}
}
class Student extends Person
{
String name;
String course;
Person(String name,String course)
{
super(name);
this.name = name;
}
String getName()
{
return name;
}
String getCourse()
{
return course();
}
}而继承抽象类是为了使子类必须使用父类的方法
还是上面那个例子,Person类有个抽象方法name;好比每个人必须有名字,那么继承他的子类必须复写name方法
重写方法的规则:
1、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
2、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
3、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如:
父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。
而重载的规则:
1、必须具有不同的参数列表;
2、可以有不责骂的返回类型,只要参数列表不同就可以了;
3、可以有不同的访问修饰符;
4、可以抛出不同的异常;
重写与重载的区别在于:
重写多态性起作用,对调用被重载过的方法可以大大减少代码的输入量,同一个方法名只要往里面传递不同的参数就可以拥有不同的功能或返回值。
用好重写和重载可以设计一个结构清晰而简洁的类,可以说重写和重载在编写代码过程中的作用非同一般.
public class A {
private int i;
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
}
public class B extends A {
public static void main(String args[]){
B b = new B();
b.setI(3);
System.out.println(b.getI());
}
}
子类中就是继承父类里的变量和方法(注意:是不是真的能继承,还看父类变量和方法的访问修饰符是什么,例如private修饰的变量和方法就不能继承)
父类的构造凼数没有被继承,这里所说的意思是指在实例化子类的对象时,在new后面不能调用父类的构造凼数,但是可以在子类的构造凼数里使用super来调用父类的构造凼数,如果没有写super这句调用,子类会自动调用父类无参的构造凼数
可以new一个子类的对象赋给一个父类的变量,当通过这个父类的变量执行方法时,其实是执行的子类的方法
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.842秒