Java中的抽象类和抽象方法:
首先聊聊抽象方法:在类中没有方法体的方法叫做抽象方法。
普通方法:
public void say(){
System.out.println("Hello");//方法体中,有必要实现某些功能
}
抽象方法:
public abstract void say();
可以看出没有方法体,那么这样有什么作用呢,它的意义何在?
1.为子类提供一个公共的类型
2.封装子类中重复的内容(成员变量和方法)
3.定义有抽象方法,子类虽然有不同的实现,但该方法的定义是一致的
抽象类:
普通类:class Animal(){
。。。。。。。
}
抽象类:abstract Animal(){
。。。。。。。
}
注意一点:抽象类中可以没有抽象方法(这块不用过多研究,如果没有,那这个类将毫无意义),只要用abstract修饰的类都是抽象类,
只要类中含有一个抽象方法,那这个类就是抽象类。
抽象类定义:含有抽象方法的类就叫抽象类
例子 :多态程序,没抽象类的
class Person {
public void f() {
System.out.println("父类");
}
}
class Students extends Person {
public void f() {
System.out.println("学生类");
}
}
public void f() {
System.out.println("父类");
}
}
class Students extends Person {
public void f() {
System.out.println("学生类");
}
}
class Teacher extends Person {
public void f() {
System.out.println("教师类");
}
}
public class Test3 {
public static void main(String[] args) {
Person s = new Students();
Person t = new Teacher();
s.f();
t.f();
}
}
抽象类的多态程序:
abstract class Person {
public abstract void f();
}
class Students extends Person {
public void f() {
System.out.println("学生类");
}
}
class Teacher extends Person {
public void f() {
System.out.println("教师类");
}
}
public class Test3 {
public static void main(String[] args) {
Person s = new Students();
Person t = new Teacher();
s.f();
t.f();
}
}
public void f() {
System.out.println("教师类");
}
}
public class Test3 {
public static void main(String[] args) {
Person s = new Students();
Person t = new Teacher();
s.f();
t.f();
}
}
抽象类的多态程序:
abstract class Person {
public abstract void f();
}
class Students extends Person {
public void f() {
System.out.println("学生类");
}
}
class Teacher extends Person {
public void f() {
System.out.println("教师类");
}
}
public class Test3 {
public static void main(String[] args) {
Person s = new Students();
Person t = new Teacher();
s.f();
t.f();
}
}
只有方法的定义,没有方法的实现。