1.抽象类
由abstract修饰,可以修饰方法也可以修饰类,约束作用,继承了抽象类,子类就必须要实现抽象类里面的抽象方法。
public class A extends Action { @Override public void doSomething() { System.out.println("dada"); } } public abstract class Action { //abstract 抽象类 :所有里面的抽象方法的实际应用都必须由子类实现,即子类必须要重写父类 //约束~ 需要别人帮我们实现 //相当于如果写了抽象方法 抽象方法只能写声明,在子类才是去实现它的 public abstract void doSomething(); }
抽象小结
1.抽象类不能new出来,只能靠子类去实现它 2.抽象类中可以写普通方法 3.抽象方法必须在抽象类中 4.子类继承抽象类,那么久必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类
2.接口
接口类由interface修饰,不用写class,只有规范,自己无法写方法~专业的约束! 约束和实现分离:面向接口编程
public interface TimeService { void timer(); } public interface UserService {//定义关键字是interface //接口中的所以定义的方法默认都是public抽象的 void add(String name);//即是public abstract void add(); void delete(String name);//删除 void update(String name);//修改 void query(String name);//查找 //所以定义的属性都是常量 int AGE=100; } public class UserServicelmpl implements UserService,TimeService { //实现接口类就要重写接口里的所以方法 实现接口使用implements关键字 //可以实现多个接口,通过逗号排序 @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() { } }
接口小结
接口作用: 1.约束 2.定义一些方法,让不同的人实现~ 3.接口方法都默认带了public abstract,即是可以直接写返回值类型个人方法名来声明就可以了,不需要写修饰符。 4.接口里写的属性都默认是public static final,即是常量 5.接口都不能被实际化,接口中没有构造方法 6.implements可以实现多个接口 7.实现接口必须要重写接口中的方法。
3.内部类
字面意思 一个类里再定义一个类,比如A类里定义B类,B类对于A类来说就是内部类
public class Outer { private int id=10; public void out(){ System.out.println("这是外部类的方法"); } //局部内部类 :方法内写的(不能写public) public void run(){ class B{ } } public class Inner{//成员内部类 public void in(){ System.out.println("这是内部类的方法"); } public void getID(){ System.out.println(id); } public void diaoyong(){ out(); } } } class A{ //一个java文件只能有一个public类,但是class类可以多个 } public class Application { public static void main(String[] args) { Outer out=new Outer(); //通过外部类的引用变量来实际化内部类 Outer.Inner inner=out.new Inner(); inner.in(); inner.getID();//能获取外部类的私有属性 inner.diaoyong();//能在内部类里面的方法调用外部类的方法(都不是直接调用,间接使用) new Outer().out();//匿名类,只使用一次,没有名字的类,不用将实例保存到变量中 } }
内部类暂时了解
4.异常
Error类
-
Error类对象由java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。
-
java虚拟机运行错误,当JVM不再有继续执行操作所需的内存资源时,将出现OutOfMemoryError。这些异常发生时,java虚拟机一般会选择线程终止。
-
还有发生在JVM试图执行应用时,如类定义错误、链接错误。这些错误是不可查的,因为他们在应用程序的控制和处理能力外,而且绝大多数程序运行的时候不允许出现这些状况
-
Exception类
-
在Exception分支有一个重要的子类(运行时异常)RuntimeException
-
空指针异常、算术异常、丢失资源、、、
-
-
这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
-
Error和Exception的区别:Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常的时候,JVM一般会终止线程;Exception通常情况下是可以被程序处理的,并且在程序中应该尽可能的去处理这些异常
public class Test { public static void main(String[] args) { int b=0; int a=1; try{//try监控区域 System.out.println(a/b); }catch (ArithmeticException e){//catch是捕获 ()这里面的参数是想要捕获的类型 System.out.println("程序出现异常,变量b不能为0"); }catch (Throwable t){//可以连续捕获,但是最大的异常得最后面!! //假设捕获多个异常:从小到大 } finally {//程序无论出不出异常,都会调用finally里面的内容(一般是用来善后工作的) System.out.println("finally"); //finally可以不用, 假设是IO流的操作,资源关闭需要 } } }