一.包的概述
1.包
本质上就是文件夹
2.创建包
多级包之间使用 " . " 进行分割 多级包的定义规范:公司的网站地址翻转(去掉www) 比如:百度的网站址为www.baidu.com 后期我们所定义的包的结构就是:com.baidu.其他的包名
3.包的命名规则
字母都是小写
二. static修饰的特点
1.被类的所有对象共享,是我们判断是否使用静态关键字的条件
2.随着类的加载而加载,优先于对象存在,对象需要类被加载后,才能创建
3.可以通过类名调用 也可以通过对象名调用
注意: 1. 被static修饰的成员, 会被该类的所有对象所[共享]
2. 被static修饰的成员, 会随着类的加载而加载, 优先于对象存在
3. 多了一种调用方式, 可以通过类名.进行调用
三.接口
1.接口介绍
接口用关键字interface修饰
public interface 接口名 {}
类实现接口用implements表示
public class 类名 implements 接口名 {}
1.接口不能实例化(我们可以创建接口的实现类对象使用)
2.接口的子类(要么重写接口中的所有抽象方法,要么子类也是抽象类)
2.接口的成员特点
成员变量
只能是常量 默认修饰符:public static final
构造方法
没有,因为接口主要是扩展功能的,而没有具体存在
成员方法
只能是抽象方法
默认修饰符:public abstract
3.类和接口的关系
类与类的关系
继承关系,只能单继承,但是可以多层继承
类与接口的关系
实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
接口与接口的关系
继承关系,可以单继承,也可以多继承
四.多态
1.多态的概述
什么是多态
同一个对象,在不同时刻表现出来的不同形态
多态的前提
要有继承或实现关系
要有方法的重写
要有父类引用指向子类对象
代码示例:
class Animal {
public void eat(){
System.out.println("动物吃饭");
}
}
class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
public class Test1Polymorphic {
/*
多态的前提:
1. 要有(继承 \ 实现)关系
2. 要有方法重写
3. 要有父类引用, 指向子类对象
*/
public static void main(String[] args) {
// 当前事物, 是一只猫
Cat c = new Cat();
// 当前事物, 是一只动物
Animal a = new Cat();
a.eat();
}
}
2.多态中的成员访问特点
成员访问特点
成员变量
编译看父类,运行看父类
成员方法
编译看父类,运行看子类
代码示例:
class Fu { int num = 10; public void method(){ System.out.println("Fu.. method"); } } class Zi extends Fu { int num = 20; public void method(){ System.out.println("Zi.. method"); } } public class Test2Polymorpic { /* 多态的成员访问特点: 成员变量: 编译看左边 (父类), 运行看左边 (父类) 成员方法: 编译看左边 (父类), 运行看右边 (子类) */ public static void main(String[] args) { Fu f = new Zi(); System.out.println(f.num); f.method(); } }
成员变量运行父类的,成员方法是子类的
3.多态的好处和弊端
好处
提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作
弊端
不能使用子类的特有成员