基本数据类型
引用数据类型
public interface Animal {
void move();
}
public class Main implements Animal{
public static void main(String[] args) {
new Main().move();
new Bird().move();
new Cat().move();
}
@Override
public void move() {
System.out.println("动物在移动");
}
}
class Bird extends Main{
@Override
public void move() {
System.out.println("小鸟在移动");
}
}
class Cat extends Main{
@Override
public void move() {
System.out.println("小猫在移动");
}
}
try-catch为异常处理机制,类似于检测器,出问题进行检测,保证程序的运行
编译时异常,运行时异常
常见异常
1、空指针异常 NullPointException
2、数组下标越界异常 ArrayIndexOutOfBoundsException
3、算数异常 ArithmeticException
…
接口是一种抽象类型,它定义了一组方法, 但不定义方法的实现,接口不能实例化对象,只能
通过类来实现接口,类实现接口时必须实现接口中定义的所有方法,否则这个类就必须定义为抽象类
使用接口的原因:
1、多继承,接口可以实现多继承的效果,一个类也可以实现多个接口
2、抽象:抽象和实现是分开的,
3、灵活性:接口可以使代码更灵活,方便拓展及维护
4、统一标准,接口可以统一系统中不同类的标准,使代码符合规范
由于平时书写代码时,有时候我们并不清楚我们具体需要使用什么类型,在此我们使用泛型对于需要使用类型的
一种替代,做到方便程序员分类的目的
(基本数据类型和封装数据类型的转换)
Integer integer = new Integer(10);//自动装箱 int --> Integer
int it = integer.intValue();//自动拆箱 Integer --> int
实现多线程有两种方式
1、继承Thread类 重写run方法(不写看不到东西)
2、实现(implement) Runnable接口 重写run方法(强制)
如何启动线程?
一种方式两种状态
1、创建需要进入线程的对象
2、创建Thread对象,把需要进入线程对象装配到其中
3、调用start()方法
1、创建线程对象
2、创建需要进入线程的对象
3、把对象引用传入到线程对象中
4、调用start()方法
当前编程方式分为面向过程和面向对象,面向过程投入时间对比面向对象要少
同时,面向过程的耦合度也高于面向对象,不利于程序的拓展性,同时也不符合OOP原则
封装、继承、多态
private int date;//private修饰
public int getDate(){return date;}
public void setDate(int date){this.date = date;}
好处:不然用户直接访问数据,需要通过set/get访问,变相提高了数据的安全性
一种事物的不同形态
好处:推进了事物的多元化
public interface Date { //接口
}
abstract class Date { //抽象类
}
类和类之间具有共同特征,讲这些共同特征提取出来,形成了的就是抽象类。
类本身是不存在的,所以抽象类无法创建对象《无法实例化》
抽象类也属于引用数据类型。
语法:
[修饰符列表] abstract class 类名{
类体;
}
class Bird extends Main{
@Override
public void move() {
System.out.println("小鸟在移动");
}
}
class Cat extends Main{
@Override
public void move() {
System.out.println("小猫在移动");
}
}
1、接口也是一种"引用数据类型"。编译之后也是一个class字节码文件
2、接口是完全抽象的。(抽象类是半抽象) 或者可以说是特殊的抽象类。
3、接口怎么定义 [修饰符列表] interface 接口名();
4、接口支持多继承,一个接口可以继承多个接口
5、接口中只包含两部分:
一部分是:
常量
一部分是:
抽象方法
6、接口中所有的元素都是public修饰的(公开的)
7、接口中的抽象方法定义是:public abstract修饰符可以省略
在接口中存在常量:public static finnal int PI = 3.1415926;
public static final这段修饰符可以省略
因为无论怎么写最后都是常量,并且final是不可变的
8、接口中的方法都是抽象方法
接口中的方法不能有方法体
什么是抽象方法?
public interface Animal {
void move();
}
static{
String date = "静态代码块";
System.out.println(date);
}
作用:让一些常量、变量初始化
注:类中静态语句块仅在类加载时被执行一次
super()只能出现在构造方法第一行,通过当前的构造方法去调用"父类"
中的构造方法,目的是:创建子类对象的时候,先初始化父类型特征
Integer i = 300;//自动装箱 int -自动转换-> Integer
int i1 = i;//自动拆箱 Integer -自动转换-> int