二、面向对象的程序设计(Object Oriented Programming)之二-----继承:
1、 继承(inheritance):java是单继承的,意味着一个类只能从另一个类继承(被继承的类叫父类【基类,base class】,继承的类叫子类),java中的继承使用extends关键字。
2、当生成子类对象时:
1>java默认首先调用父类不带参数的构造方法,然后执行该构造方法,生成父类的对象,接下来,再去调用子类的构造方法,生成子类的对象。
2>super关键字:表示对父类对象的显示引用。如果子类使用super()显式调用父类的某个构造方法,那么在执行的时候就会寻找与super()所对应的构造方法而不会去寻找父类不带参数的构造方法。与this一样,super也必须要作为构造方法的第一条执行语句。
例:
public class Child extends Parent //子类
{
public Child()
{
super(1);//显示调用父类
System.out.println("child");
}
public static void main(String[] args)
{
Child child = new Child();
}
}
class Parent //父类
{
public Parent(int i)
{
System.out.println("parent");
}
public Parent()
{
System.out.println("no args");
}
}
运行结果为:parent 如果去掉super(1);运行结果为: no agrs
child child
3、关于继承的3点:1>父类有的,子类也有;
2>父类没有的,子类可以增加;
3>父类有的,子类可以改变。
例:
public class InheritenceTest
{
public static void main(String[] args)
{
Apple apple = new Apple();
System.out.println(apple.name);
}
}
class Fruit
{
String name = "fruit";
}
class Apple extends Fruit
{
String name = "apple";
}
此时运行结果为:apple
当去掉String name = "apple";时 ,运行结果为:fruit
当去掉String name = "fruit";时,运行结果为:apple
4、方法重写(Overide):又叫覆写,子类与父类的方法返回类型一样、方法名称一样、参数一样,这样我们说子类与父类的方法构成了重写关系。
5、 方法重写与方法重载的关系:
1>重载是发生了一个类内部的两个或多个方法;
2>重写发生在父类与子类之间,即仅在继承中才存在重写。当两个方法构成重写关系时,可以在子类方法中通过super()的形式调用父类的run()方法。
6、在定义一个类的时候,若没有显示的指定该类的父类,那么该类就会继承与java.langObject类。
例:
public class InheritenceTest2
{
public static void main(String[] args)
{
Dog dog = new Dog();
dog.run(1);
}
}
class Animal
{
public void run()
{
System.out.println("animal is running");
}
}
class Dog extends Animal
{
public void run(int i)
{
super.run();//调用父类的run方法
System.out.println("dog is running");
}
}
此时的运行结果为:animal is running
dog is running
当去掉super();时,运行结果为:dog is running
当去掉super()和dog.run(1);括号内的1后,运行结果为:animal is running
需要理解记忆的小知识点概念愈来愈多,不的不承认自己被它们弄晕了,自己的总结肯定不全面,望各位指教!