一、抽象类、抽象方法
1、抽象类
在面向对象的概念中,所有对象都是通过类来描述的。但是反过来,不是所有类都可以用来描绘对象,如果一个类没有足够的信息来描述一个具体的对象,这个类就是抽象类。
抽象类除了不能实例化对象,其他和普通类完全相同,同样包含成员变量、成员方法和构造方法。
由于抽象类不能实例化对象,所以抽象类必须被继承才能被使用。在java中,一个类只能继承一个抽象类。
java中通过abstract class来定义抽象类:
abstract class A {
pirvate Integer a;
public void A(Integerm) {
a = m;
}
public Integr getA() {
return a;
}
public void prinInfo() {
system.out.pringln(a);
}
........
}
class B extends A {
pirvate Integer b;
public void B(Integer m, Integer n) {
super(m); //父类的构造函数
b = n;
}
public Integer getB() {
return b;
}
public void prinInfo () {
system.out.pringln("A=" + getA() + "!" + "B=" + getB());
}
........
}
Public class Test {
public void main(String[] args) {
B objB = new B(2, 3);
A objA = new B(4, 5);
objB.prinInfo();
objA.prinInfo();
}
}
如上,函数prinInfo()是重写,两次调用的都是B对象的prinInfo()函数。
1) 尽管A是抽象类,其也有1个成员变量、1个构造方法、2个成员方法。
2) B从A继承,继承了A的2个成员方法GetA()和PrintInfo(),其中PrintInfo()是重写。由于A的成员变量是Private,B无法继承,但是B仍然后通过Pubilic的getA()方法访问A的成员变量。
2、抽象方法:
抽象方法通过abstract关键字声明:
public abstract void xxxx();
抽象方法只需要方法声明,不需要方法体。
1) 如果一个类包含抽象方法,此类必须必须声明为 abstract 抽象类,否则会导致编译出错。
2) 任何子类必须重写所有抽象方法。否则,这个子类还是抽象类, 而且必须使用 abstract 声明。
3) 构造方法、 static、private 和 final 声明的方法不能是抽象方法,因为这三种方法在子类中 不能覆盖。类似地,final 类中不能有任何 abstract 方法。
4) 就算类中没有 抽象方法,这个类也能声明为 abstract。使用这种方式声明的 abstract 类表明实现的不完整,要交给子类实现。这种类不能实例化。
标签:prinInfo,Java,abstract,抽象,void,抽象类,方法,public
来源: https://www.cnblogs.com/yickel/p/12782222.html