最近开始认真阅读java的基础书籍,以前好多东西都是只有一些概念,希望借助这次阅读java的基础知识能够对java有更加深入的了解。也希望大牛们能多给点知道意见。
1.java的继承:这个是面向对象编程的重要特征之一,它可以实现对类的复用。子类通过继承父类,可以使用父类中已经定义好的方法和变量。但是java中一个子类只能继承一个父类,这就是java单继承的概念吧。不过,一个父类却可以被多个子类继承。
子类继承父类的格式:修饰符class 子类名 extends 父类名 {//程序} 下面我们来看一个例子:
public class A{
public int c;
public void hh(){
System.out.println("zxcvbnm");
}
}
public class B extends A{
public void hehe(){
System.out.println("asdf");
}
public static void main(){
B b = new B();
b.c = 100; //调用父类的公共成员变量
b.hh(); //调用父类的公共方法
b.hehe(); //调用本类的方法
}
}
子类继承了父类之后,然后以父类为基础,可以实现自己的方法。子类可以调用父类中的公共方法,也就是可以理解为子类能够使用父类的公共方法。当然,子类也可以重写父类的方法。子类重写父类方法的时候,要确保方法名相同,参数相同,返回值相同。这样子类在调用重写的方法时候,实际上调用的是子类重写的方法。当然,也可以用super作为调用者来调用父类被覆盖掉的方法。这里就不一一举例说明了。
2.java的接口(interface)和抽象类(abstract class)应该放在一起来说,因为两者之间有许多相似的地方,但是也有一些不同。l这两者代表的都是抽象类型。OOP面向对象的编程,如果要提高程序的复用率,增加可维护性,可扩展性,就必须使用java的接口和抽象类。
2.1 java的接口和抽象类最大的去边是抽象类可以部分的实现,而接口不能。接口中只能定义方法,而具体的实现是要在实现类中类写实现的方法。这应该是抽象类和接口的最大区别。再向一个抽象类中加入一个方法时,所有继承于这个抽象类的子类都能够得到这个方法。而如果再向接口中添加一个方法,所有的实现类中必须都实现这个方法。
2.2 一个抽象类的抽象方法只能只能在子类中实现,也就是说,这个实现处于抽象类所定义出的继承的机构中。但是由于java是单继承, 所以抽象类作为类型定义的工具的效能就大打折扣。而一个类可以实现多个接口,在这一点上,java的接口优势就显现出来了。接下来我们看看下面的例子:
接口:
public interface A {//定义接口Apublic void hh(); //接口方法
public void hehe(); //接口方法
}
接口A的实现:
public class B implements A{ //实现接口A
@Override
public void hh() { //hh方法的实现
System.out.println("AAA");
}
@Override
public void hehe() { //hehe方法的实现
System.out.println("BBB");
}
}
方法B在实现接口A的时候要实现方法A中所有的方法。方法定义在接口A中,具体实现要在实现类中来写,这样就是接口,在接口中不能有实现的方法。
下面我们来看看抽象类
public abstract class A { //抽象类A
public void hh(){ //方法hh
System.out.println("hhhh");
}
public abstract void hehe(); //抽象方法hehe
}
类B继承与抽象类A
public class B extends A{ //类B继承于抽象类A
@Override
public void hehe() { //实现抽象方法hehe 这点跟接口差不多
System.out.println("hehe");
}
}
我们可以看出在抽象类的继承中,B只需要实现A中定义的抽象方法hehe,而hh方法因为不是抽象的,也可以直接被B继承。
通过以上的介绍,大家能明白java类中的继承,Java的接口和抽象类了吧。