抽象类
在所有的面向对象概念中,所有的对象都是通过类来描述的,但也存在类不能描述对象,那就是抽象类。(抽象类不能将对象实例化)
抽象类除了不能将对象实例化之外,都和普通类一样(成员变量、成员方法)
因为抽象类不能将对象实例化,所以抽象类不能直接在主类中调用,只能被继承来实现它的作用
java中一般用abstract class来定义抽象类
//文件名为abstractclass.java public abstract class abstractclass { private String name; private String sex; public abstractclass (String name,String sex){ System.out.println("The peole's information"); this.name = name; this.sex = sex; } public String toString(){ return name+" "+sex; } public static class student extends abstractclass{ private String school; student(String name, String sex) { super(name, sex); } public String setSchool(){ return school; } public void getSchool(String school){ this.school = school; } } public static void main(String[] args) { student stu = new student("yang","女"); stu.getSchool("吉首大学"); System.out.println("姓名 性别 学校\n"+stu.toString()+" "+stu.setSchool()); } }
抽象方法
如果你想定义一个 包含一个特别的成员方法,该方法的具体实现由它的子类确定的 类,那你就可以定义该方法为抽象方法。
用abstract申明抽象方法,抽象方法只包含一个方法名,没有方法体抽象方法没有定义,方法名后面跟一个分号,不是花括号
public abstract class abstractclass { private String name; private String sex; public abstract String abstractway(); // }
抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类
抽象类中的抽象方法只是声明,不包含方法体,就是不给出也就是方法的具体功能
抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
java接口
接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合。
接口通常以interface来声明。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。
一个接口可以有多个方法,接口中的方法不能在接口中实现,只能由实现接口的类来实现接口中的方法
接口与类的区别:
接口和抽象类的区别:
多线程
Thread类
Thread类是什么?
Thread 类是线程的描述类,每个线程都有一个 Thread 对象与之关联。Thread 类是 JVM 用来管理线程的一个类。每个线程都有一个唯一的 Thread 对象与之关联。
Thread类的常见构造方法:
Thread() | 创建线程对象 |
Thread(Runnable target) | 使用 Runnable 对象创建线程对象Thread()创建线程对象 (target 为描述任务的对象) |
Thread(String name) | 创建线程对象并命名 |
Thread(Runnable target , String name) | 使用 Runnable 对象创建线程对象并命名 |
start() | 启动一个线程 |
run() | 不需要用户来调用(继承Thread类必须重写run方法,在run方法中定义具体要执行的任务) |
sleep(long millis) | 相当于让线程进入阻塞状态,交出CPU,让CPU去执行其他的任务。(参数是毫秒) |
sleep(long millis,int nanoseconds) | 参数是毫秒,纳秒,即让线程睡眠的时间 |
一个线程的生命周期
线程是一个动态执行的过程,它也有一个从产生到死亡的过程