java面向对象中的抽象方法抽象类的经典入门知识,浅显易懂经典实用。
经典总结:
1.一个方法,没有方法体,就成了抽象方法。
2.一个类中有抽象方法,这个类就变成了一个抽象类。
3.抽象类中一定有抽象方法吗?不一定。
抽象类中可以有普通方法,也可以有抽象方法,抽象方法的个数,可以是0-n个。
4.子类继承父类,必须重写全部的抽象方法,除非子类变成了抽象类。(在class前加上abstract)
5.抽象类不可以创建对象,但是子类(非抽象类)可以创建对象。
代码演示:
public abstract class Person { //抽象类--> class的前面abstract
public abstract void say(); //抽象方法,没有方法体
public void eat() {
System.out.println("吃东西...");
}
public abstract void study(String name, int age, double height); //抽象方法,没有方法体
public abstract String sleep(int a); //抽象方法,没有方法体
}
abstract class Demo extends Person{
//Demo继承了父类Person,没有重写全部的抽象方法,所以自身也变成了抽象类
@Override
public void study(String name, int age, double height) {
System.out.println("我们热爱学习...");
}
@Override
public String sleep(int a) {
System.out.println("我们没有要睡觉八个小时...");
return "睡觉";
}
}
class Test extends Person{
//继承了抽象类,重写了全部的抽象方法
@Override
public void say() {
// TODO Auto-generated method stub
}
@Override
public void study(String name, int age, double height) {
// TODO Auto-generated method stub
}
@Override
public String sleep(int a) {
System.out.println("我们要保持充足的睡眠...");
return "睡觉";
}
}
class Sub{
//main方法要是没在public修饰的类中的时候,要用run as===》run configurations配置
public static void main(String[] args) {
//创建父类Person的对象:----抽象类 不可以创建对象!
//Person p=new Person(); 这种写法错误
//创建子类Test的对象
Test t=new Test();
//就想创建Person的对象
Person p=new Test(); //多态
p.sleep(10);
}
}