Interface与abstract类的介绍- Final和abstract永远不会同时出现
- abstract和static不能放在一起,否则便会出现错误(这是因为static不可被覆盖,而abstract为了生效必须被覆盖)
- Interface(接口)
- 所有方法都是公开、抽象方法,所有属性都是公开、静态、常量
- 类只能是实现接口,并且可以实现多个接口,类必须实现接口的方法,否则为抽象类
- 接口可不写public,但子类中实现接口的过程中public不可省
- 接口和接口之间可以允许多继承
- 接口是实现了不同层次、不同体系对象的共同属性
- abstract类(抽象类)
- 如果一个类如果要添加抽象方法就必须将类设置为abstract
- abstract类必须被继承使用,不能生成对象
- abstract的方法不可以private修饰
- 其子类必须覆盖父类的抽象方法
Static class与not static class的区别- 静态内部类只属于类本身,不属于莫一类的对象
- 静态内部类可以脱于外部类被创建(new一个静态内部类不需要外部类成员)
- 一个非静态内部类可以访问外部类的数据和方法,因为他就在外部类里面
- 静态内部类不需要有指向外部类的引用,非静态内部类需要持有对外部类的引用。
- 非静态内部类能够访问外部类的静态和非静态成员,静态类不能访问外部类的非静态成员,他只能访问外部类的静态成员
java多态的实现原理- 靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法
实现多线程的两种方法:Thread与Runablepublic class Six { public static void main(String[] args) { MyThreadRunnable mr = new MyThreadRunnable(); new Thread(mr).start(); new Thread(mr).start(); new MyThread().start(); new MyThread().start(); }}class MyThreadRunnable implements Runnable { @Override public void run() { }}class MyThread extends Thread { @Override public void run() { }}- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 可以看出Thread()启动时继承Thread方法,Thread(Runnable target)启动中Runnable实现接口Runnable
- 在启动方式上:继承Thread的可以直接new出来启动,实现Runnable接口的类new出来需要通过Thread来启动
- 由上一点和代码可以看出,Runnable的实现类只new了一次,可见启动多线程操作的是一个类
|
|