Java面向对象-抽象类和抽象方法
- 1、代码案例展示
- 2、抽象类和抽象方法的关系:
1、代码案例展示
1、在一个类中会有一类方法,无需重写,直接使用
2、在一个类中会有一类方法,会对这个方法进行重写
3、一个方法的方法体去掉,然后被abstract修饰,那么这个方法就变成了一个抽象方法
4、一个类中如果有抽象方法,那么这个类也要变成一个抽象类
5、一个抽象类中可以有0个或者n个抽象方法
6、抽象类可以被其他类继承
7、一个类继承一个抽象类,那么这个类可以变成抽象类
8、一般子类不会加abstract修饰,一般让子类重写父类中的抽象方法
9、子类继承抽象类,就必须全部的抽象方法
10、子类如果没有重写父类的全部抽象方法,那么子类可以变成一个抽象类
11、创建抽象类的对象:抽象类不可以创建对象
12、创建子类对象
13、多态的写法
package com.msb_abstract;//4、一个类中如果有抽象方法,那么这个类也要变成一个抽象类
//5、一个抽象类中可以有0个或者n个抽象方法
public abstract class Person {//1、在一个类中会有一类方法,无需重写,直接使用public void eat() {System.out.println("eat");}//2、在一个类中有一类方法,会对这个方法进行重写//3、一个方法的方法体去掉,然后被abstract修饰,那么这个方法就变成了一个抽象方法public abstract void say();public abstract void sleep();
}//6、抽象类可以被其他类继承
//7、一个类继承一个抽象类,那么这个类可以变成抽象类
//8、一般子类不会加abstract修饰一般让子类重写父类中的抽象方法
//9、子类继承抽象类,就必须全部的抽象方法
//10、子类如果没有重写父类的全部抽象方法,那么子类可以变成一个抽象类。
class Student extends Person {@Overridepublic void say() {System.out.println("say...");}@Overridepublic void sleep() {System.out.println("sleep...");}
}class Demo {public static void main(String[] args) {//11、创建抽象类的对象:抽象类不可以创建对象//Person p = new Person();//12、创建子类对象Student st = new Student();st.say();st.sleep();//13、多态的写法Person p = new Student();st.say();st.sleep();}
}
2、抽象类和抽象方法的关系:
一个抽象类中可以有0个或者n个抽象方法
抽象类的作用:
在抽象类中定义抽象方法,目的是为子类提供一个通用的模板,子类可以在模板的基础上进行开发,先重写父类的抽象方法,然后可以扩展子类自己的内容,抽象类设计避免了子类设计的随意性,通过抽象类,子类的设计变得更加严格,进行某些程度上的限制,使子类更加的通用。
面试题:
1、抽象类不能创建对象,那么抽象类中是否有构造器?
抽象类中一定有构造器,作用:给子类对象初始化对象的时候要先super调用父类的构造器。
2、抽象类是否可以被final修饰?
不能被final修饰,因为抽象类设计的初衷就是给子类继承使用的,要是被final修饰了,就不存在继承了,就没有子类了。