java 学习笔记 day08 final/static关键字、抽象类和接口
1.final关键字
- final修饰类:此类不能被继承
- List item
- List item
final修饰变量:则变量不能被修改,是常量
final修饰方法:父类的方法被final修饰时,不能被重写
2.static关键字
2.1被static修饰的成员的特点,
- 被类的所有对象共享
- 可以通过类名直接访问
- 优先于对象存在
- 随着类的加载而加载
public class student {
public String name;
public int age;
public static String graduateFrom;
public void show(){
System.out.println(name+"--"+age+"--"+ graduateFrom);
}
}
public class studentTest {
public static void main(String[] args) {
student.graduateFrom="宽客塔";
student s= new student();
s.name="刘亦菲";
s.age=30;
// s.graduateFrom="宽客塔";
s.show();
s.name="刘小菲";
s.age=25;
// s.graduateFrom="宽客塔";
s.show();
}
}
2.2被static修饰的成员方法
- 静态的方法只能访问【静态】的成员变量和【静态】的成员变量
静态的方法中不能出现this和super关键字。因为静态方法是随着类的加载而加载,先进入内存,this和super在对象创建时才存在。
3.抽象类
- 抽象类的特点:
-
A:抽象类和抽象方法必须使用abstract关键字修饰
-
B:抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
-
C:抽象类不能实例化 抽象类如何实例化呢? 参照多态的方式,通过子类对象实例化。
-
D:抽象类的子类 要么重写抽象类中的所有抽象方法 要么是抽象类
public abstract class Animal {
public abstract void eat();
}
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
public class AnimalTest {
public static void main(String[] args) {
Animal a= new Cat();
a.eat();
}
}
4. 接口
- 定义接口使用interface关键字
- 类和接口是实现关系,用implements关键词实现
- 接口不能实例化,用多态来实例化
- 接口中的变量默认就是常量
- 接口中没有构造方法,但是默认是Object
- 接口中的方法必须是抽象
public interface Jump {
public abstract void jumping();
}
public class Cat implements Jump{
@Override
public void jumping() {
System.out.println("cat jump");
}
}
public class Test {
public static void main(String[] args) {
Jump j = new Cat();
j.jumping();
}
}
-
类与类:
继承关系,只能单继承,可以多层继承。 -
类与接口:
实现关系,可以单实现,也可以多实现。
还可以在继承一个类的同时实现多个接口。 -
接口与接口:
继承关系,可以单继承,也可以多继承。 -
抽象类和接口的区别:
-
A:成员区别 抽象类: 成员变量:可以是变量,也可以是常量 构造方法:有 成员方法:可以是抽象方法,也可以是非抽象方法 接口: 成员变量:只能是常量 成员方法:只能是抽象方法
-
B:关系区别 类与类:继承关系,只能单继承,可以多层继承 类与接口:实现关系,可以单实现,也可以多实现 接口与接口:继承关系,可以单继承,也可以多继承 C:设计理念的区别 抽象类 被继承体现的是:"is a" 抽象类中定义的是继承体系的共性功能 接口 被实现体现的是:"like a" 接口中定义的是该体系的扩展功能
-
举例: 猫,动物 猫,跳高运动员
5.包
- 包:其实就是文件夹。
- 作用:就是对类进行分类管理。
- 包的定义格式:
package 包名;
如果是多级包用.隔开即可 - 注意事项:
A:package必须是程序的第一条可执行语句
B:package语句在一个java文件中只能有一个 - 包的导入 用import
6.权限修饰符
- 权限修饰符:
-
本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类) private: Y 默认: Y Y protected: Y Y Y public: Y Y Y Y