一些概念:
1.抽象方法:没有具体功能的代码,父类知道子类一定要执行某个功能,但是每个子类的使用情况不一样
2.接口:接口是比抽象类还抽象的类,由抽象方法构成的一组行为规范
权限修饰符
作用范围从小到大:private–>default–>protected–>public
修饰符 | 在同一个类里面 | 在同一个包不同类 | 在不同包的子类 | 在不同包的其他类 |
---|---|---|---|---|
private | √ | |||
缺省default | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
final关键字
- 类:被final修饰的类不能被继承
- 方法:被final修饰的方法不能被重写
- 变量:这个变量是不可变的,只能使用一次等号赋值
- final修饰基本类型时,只能一次赋值,不能改变
- final修饰引用类型时,只能一次赋值但是可以改变对象里面的属性
final int a=10;
final Person p=new Person();
p.age=19;
p.age=20;
p.age=18;
}
}
class Person{
int age;
}
抽象类
- 抽象类的格式:
abstract class 类名{}
- 抽象方法的格式:
public abstract 返回值类型 方法名();
- 特点:
- 抽象类不能创建对象
- 有抽象方法的类一定是抽象类,抽象类中不一定有抽象方法
- 子类必须要重新写抽象父类的所有抽象方法,不然会报错
- 抽象类的使用步骤:
- 定义类继承抽象类
- 子类重写抽象方法
- 创建子类对象
接口
- 接口的格式
public interface 接口名{
常量(一般不写)
抽象方法
}
- 使用步骤
- 创建接口,里面只能是抽象方法
- 定义使用类,必须重写方法.格式:
- 使用实现类
class 子类 implements 接口{ @Override 方法重写 }
- 接口特点:
- 接口里面没有构造方法
- 接口里面的方法默认为抽象方法
- 接口里面的常量默认 public static final (没有写修饰符的会默认添加)
- 多接口和多继承
- 一个类可以实现多个接口
class 类名 implements 接口1,接口2{}
敲代码时出现的问题:
1. 敲代码的时候会出现一种情况,为了敲代码而去敲代码,虽然运行成功,
但是脑子里还是一片茫然,不知道在干什么.在新建之前先在脑子里过一遍,到底要写什么,流程是怎么样的.
2.基础阶段基本上不会出现大的bug,都是一些细节错误,不能一味的想着提高速度.
思考题:
1.父类中抽象方法有必要存在吗?
为了强制子类重写方法
2.java有多继承吗?
从不同角度思考:比如类和接口
3.final和abstract是否能一起使用
从方法思考