抽象类
abstract 抽象的
抽象类 : 被abstract修饰的类
抽象方法 : 被abstract修饰的方法
没有方法体
必须定义在抽象类中
注意 :事务罗克韦尔
1.抽象类不能实例化
2.抽象类中可以定义 : 属性,构造器,功能,抽象方法...
3.抽象方法必须定义在抽象类中(接口)
4.抽象方法使用之前必须被重写
5.抽象类需要根据具体子类对象进行使用 :
具体子类 : 重写所有的抽象方法 + 按需新增
抽象子类 : 按需重写 + 按需新增
6.abstract不能与private,static,final与native一起使用
7.多态 : 类的多态,抽象类的多态,接口多态
一种特殊的类: 这个类被abstract修饰。
-
被abstract修饰的类是抽象类,抽象类就是专门用来被继承的;(Tips 继承尽量少些)
-
抽象类中可以定义普通类中定义的所有内容,而且他自己还可以定义抽象方法。
-
抽象方法就是通过abstract修饰的方法,这个方法只有方法声明没有方法实现(专门让子类重写的)
-
一个类如果继承了抽象类,需要将这个抽象类中的所有抽象方法全部重写了,否则当前这个类也是抽象类
-
抽象类中可以存在构造器,但是构造器不是用来让外部创建对象使用的,而且给子类用的,因为子类创建对象的时候必须要调用父类的构造器。(抽象类不能实例化)
-
包含抽象方法的类,可能是抽象类;
-
抽象类实用类被继承的,抽象方法是用来被重写的。
package com.yjxxt.oop.abs; public class Test01 { public static void main(String[] args) { // Father f = new Father(); // new Son(); new S(); } } abstract class Father{ String name; public Father(){ System.out.println("我是抽象类Father 的构造器"); } public void m(){ System.out.println("Father m"); } public abstract int function1(int n); public abstract void function2(); } abstract class Son extends Father{ public Son(){ System.out.println("我是抽象类Son 的构造器"); } /* public int function1(int n){ return 1; } public void function2(){ }*/ public abstract void function3(); } class S extends Son{ public S(){ System.out.println("我是子类S 的构造器"); } public void function3(){ } public int function1(int n){ return 1; } public void function2(){ } }
final类
可以修饰成员,可以修饰局部
被final修饰的类称之为final最终类,final类是无法被继承的;
被final修饰的方法称之为最终方法,final方法无法被重写;
被final修饰的变量称之为最终变量,程序运行期间无法修改其值;