Java基础--面向对象03
final和static关键字
•final关键字
是最终的意思,可以修饰类,成员变量,成员方法。
–修饰类,类不能被继承
–修饰变量,变量就变成了常量,只能被赋值一次
–修饰方法,方法不能被重写
static关键字
静态的意思。可以用来修饰成员变量和成员方法。
static修饰成员的特点:
A:被类的所有对象共享。
其实也是判断一个成员是否应该用static修饰的条件。
B:可以通过类名直接访问
C:优先于对象存在
D:随着类的加载而加载
•静态方法的访问特点
–静态方法只能访问静态的成员变量和静态的成员方法
–静态方法的注意事项
–在静态方法中是没有this,super关键字的
静态的内容是随着类的加载而加载,this和super是随着对象的创建而存在。
非静态的成员方法:
能访问静态的成员变量
能访问非静态的成员变量
能访问静态的成员方法
能访问非静态的成员方法
静态的成员方法:
能访问静态的成员变量
能访问静态的成员方法
抽象类
概述:
当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能 提取出了一个动物类,这个时候我们是可以通过Animal a = new Animal()来创建动物对象的,其实这是不对的。为什么呢?因为,我说动物,你知道我说的是什么动物吗?只有看到了具体的动物,你才知道,这是什么动物。 所以说,动物本身并不是一个具体的事物,而是一个抽象的事物。只有真正的猫,狗才是具体的动物。同理,我们也可以推想,不同的动物吃的东西应该是不一样的,所以,我们不应该在动物类中给出具体体现,而是应该给出一个声明即可。在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。
特点:
抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
抽象类不能实例化
那么,抽象类如何实例化呢?
按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
抽象类的子类,要么是抽象类
要么重写抽象类中的所有抽象方法
抽象类和抽象方法必须用abstract关键字修饰
例子:
//抽象类
public abstract class Animal {
/*
public void eat() {
System.out.println("吃东西");
}
*/
//抽象方法
public abstract void eat();
}
抽象类的成员的特点
•成员变量
–可以是变量
–也可以是常量
•构造方法
–有构造方法,但是不能实例化
–那么,构造方法的作用是什么呢?
•用于子类访问父类数据的初始化
•成员方法
–可以有抽象方法 限定子类必须完成某些动作
–也可以有非抽象方法 提高代码复用性
接口
接口用关键字interface表示
–格式:public interface 接口名 {}
–类实现接口用implements表示
•格式:public class 类名 implements 接口名 {}
–接口不能实例化
•那么,接口如何实例化呢?
•按照多态的方式,由具体的实现类实例化。其实这也是多态的一种,接口多态。
–接口的实现类
•要么是抽象类
要么重写接口中的所有抽象方法
类与类_类与接口_接口与接口的关系
•类与类
–继承关系,只能单继承,但是可以多层继承
•类与接口
–实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时实现多个接口
•接口与接口
–继承关系,可以单继承,也可以多继承
抽象类与接口的区别
•成员区别
抽象类 变量,常量;有抽象方法;抽象方法,非抽象方法
接口 常量;抽象方法
•关系区别
类与类 继承,单继承
类与接口 实现,单实现,多实现
接口与接口 继承,单继承,多继承
•设计理念区别
抽象类 被继承体现的是:”is a”的关系。共性功能
接口 被实现体现的是:”like a”的关系。扩展功能
包的概述和权限修饰符
包的概述
–其实就是文件夹
–作用:对类进行分类管理
–包的划分:
–学生的增加,删除,修改,查询
–老师的增加,删除,修改,查询
–以及以后可能出现的其他的类的增加,删除,修改,查询
–基本的划分:按照模块和功能分。
格式:
–package 包名;
•多级包用.分开即可
–注意事项:
•package语句必须是程序的第一条可执行的代码
•package语句在一个java文件中只能有一个
导包格式:
–import 包名;
四种权限修饰符的访问特点