面向对象三
一、static
-
案例:
public class Person { //2:赋初始值 { System.out.println("匿名代码块"); } //1:只执行一次 static{ System.out.println("静态代码块"); } //3 public Person(){ System.out.println("构造方法"); }
public static void main(String[] args) {
Person person1 = new Person();
System.out.println("===============================");
Person person2 = new Person();
}
}
-
静态导入包
//静态导入包~ import static java.lang.Math.random; import static java.lang.Math.PI;
public class Test {
public static void main(String[] args){
System.out.println(random());//直接使用
System.out.println(PI);//直接使用
}
}
二、抽象类
-
abstract 修饰符可以用来修饰方法也可以用来修饰类。如果修饰方法,那么该方法是抽象方法,如果修饰类,那么该类是抽象类。
-
抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象方法。
-
抽象类不能用new关键字来创建对象,他是用来让子类继承的。
-
抽象方法,只有方法的声明,没有方法的实现,他是让子类来实现的
-
子类继承抽象类,那么就必须要实现抽象类没有实现的方法,否则该子类也要声明为抽象类。
-
public abstract 默认修饰和声明方法
三、接口
-
普通类:只有具体实现 <------->抽象类:具体实现和规范(抽象方法)都有!
-
接口:只有规范(自己无法写方法,专业的约束!约束和实现分离:面向接口编程)
-
接口就是规范,定义一组规则,体现了现实世界中"如果你是...则必须能..."的思想。如果你是天使,则必须能飞。如果你是汽车,则必须能跑。如果你是好人,则必须干掉坏人;如果你是坏人,则必须欺负好人。
-
接口的本质是契约,就像我们人间的法律一样,制定好后大家都遵守。
-
OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如C++、java、C#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象。
-
声明接口的关键是interface,(声明类的是class)
-
案例:
//interface 定义接口的关键字,接口都需要有实现类 public interface UserService { //接口中的所有定义其实都是抽象的 public abstract
//常量
public static final int AGE = 99;
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
```java
public interface TimeService {
void timer();
}
//抽象类: extents //类 可以实现接口 implements 接口 //实现了接口的类,就需要重写接口中的方法 //多继承,利用接口实现 public class UserServiceImp implements UserService,TimeService{ //接口中的所有定义其实都是抽象的 public abstract @Override public void add(String name) {
} @Override public void delete(String name) { } @Override public void update(String name) { } @Override public void query(String name) { } @Override public void timer() { }
}
-
作用:
-
约束
-
定义一些方法,让不同的人有不同的实现
-
public abstract 默认修饰和声明方法
-
public static final 默认修饰常量
-
接口不能被实例化,因为接口中没有构造方法
-
implements可以实现多个接口
-
必须要重写接口中的方法
-
四、内部类
内部类就是在一个类的内部在定义一个类,比如A类中定义一个B类,那么B类相对于A类来说就称为内部类,而A类相对于B类来说就是外部类了。
-
成员内部类
-
静态内部类
-
局部内部类
-
匿名内部类