继承——总结
各种事物即对象都有自己的属性和方法,各种对象之间会有或多或少的共同点,若将各对象的属性和方法都写一遍,会造成冗余,且看不出对象之间的联系,所以引入“继承”。顾名思义,继承至少需要两个类,即子类(class A)和父类(class B),子类继承父类的属性和方法,也可以拥有属于自己特有的属性和方法,格式为:class A extends B;
子类继承父类,那么子类对象可以自动转型为父类对象,一个进行了由子类自动转型的父类生成的对象可以调用显示子类中的方法格式为:B b=new A();
一个对象只能调用自己所在类中的方法,由于继承,子类可以调用父类中的方法,那么父类对象可不可以调用子类中的对象呢?
当然可以,其实现的方式为方法的重写,这与方法的重载不一样,方法的重载是指在一个类中,相同类型和名字的方法所传递的形式参数的类型或个数不一样,根据实参与形参的对应关系来确定要调用的方法,而方法的重写是将父类中的方法头在子类中重写一遍,其在方法体中可以根据子类的需要而编写相应的代码;
在JAVA中有一个很重要的表现形式为多态,就好比两个人做事所用的方法一样但结果不一定一样,同一个类的两个不同对象在调用同一个方法的时候,其结果就可能不一样,例如:
public class A{
int i;
public viod aaa(){
System.out.println("学习");
}
}
public class B extends A{
public void aaa(){
System.out.println("不学习");
}
}
public class Test{
public static void main(String args[]){
A aaa=new A();
a.aaa();
B b=new B();
b.aaa();
A a1=new B();
a1.aaa();
}
}
其结果为:学习
在学习
在学习
以上可看出: 多态的表现形式为继承和方法的重载
一个类只能够继承一个父类
class A;
class B extends A;
当我们(知道应该做什么,但不知道怎样去做)不知道怎样描述一个共同点时,我们可以用接口将这些共同点抽象的表示出来,这样的类就是接口,定义一个接口的格式为:
public interface C{
public viod c();
}
接口里面的方法为抽象方法;
接口不能实例化,只能通过继承给子类后才能进行实例化,接口继承给子类的格式为:
interface C;
class D implements C;
一个类可以实现多个接口
interface E;
interface F;
class G implements E,F;
一个接口可以继承多个接口
interface H extends E,F;
页:
[1]