抽象类
Java的类只能单继承,只有接口可以多继承。
public class Application extends Person {//抽象类的所有方法,继承了它的子类,都继承了它的方法
public static void main(String[] args) {
}
@Override //重写父类的方法
public void dosomething() {
}
}
public abstract class Person{
//抽象类,就是让别人写这一块,帮助我们实现
public abstract void dosomething();//抽象方法,定义好了之后让别人来写
//1,抽象方法只能存在于抽象类中;
//2.抽象类中可以写普通方法;
//3.抽象类不可以new一个对象
public void go(){
}
}
接口
接口是抽象的抽象;接口的本质就是定义不同的方法,让别人去实现。
package OOP.Demo15;
//接口采用interface关键字
public interface Userservice {
void add (int age);
void delete(int age);
void update(int age);
void querry(int age);
}
package OOP.Demo15;
//接口实现的规范命名标准
//接口的继承必须要重写所有方法
//implements可以实现多个接口的继承
public class UserserviceImpl implements Userservice,Timerservice{
@Override
public void add(int age) {
}
@Override
public void delete(int age) {
}
@Override
public void update(int age) {
}
@Override
public void querry(int age) {
}
}
1.接口不能被实例化,接口中没有构造方法
2.接口中常量定义public final int age=17;
3.接口中只能定义抽象类,为public abstract 抽象类,只不过该词经常被省略,直接写成void+方法
内部类
1.局部内部类和匿名内部类
public class Outer {
private int ID=10;
public void out(){
System.out.println("这是一个外部类");
}
public class Inner{//在外部类里面还可以定义一个类
public void in(){
System.out.println("这是一个内部类");
}
public void getId(){
System.out.println(ID);
}
class B{
public void in(){
//局部内部类
}
}
}
}
public class Application {
public static void main(String[] args) {
Outer outer=new Outer();
Outer.Inner inner=outer.new Inner();//需要通过外部类来定义内部类
inner.in();
inner.getId();//通过内部类可以调用外部类的私有属性
}
}
class A{ //一个Java文件只能有一个public类
}
2.匿名内部类
public class Outer {
public static void main(String[] args) {
new apple().eat();//匿名内部类,没有实例化对象就可以定义
}
}
class apple{
public void eat(){
System.out.println("eat");
}
}
异常
public class Exception {
public static void main(String[] args) {
int a=1;
int b=0;
try {
System.out.println(a/b);
}catch (ArithmeticException e){
System.out.println("该程序段出现异常");
}catch (Throwable h){//可以捕获多个异常,但是需要从小到大进行
System.out.println("");
}
finally {
System.out.println("finally");
}
}
public void c(){
d ();
}
public void d(){
c();
}
}
该图为异常的排列顺序
重点抛出异常时,可以使用快捷键,选中异常区域,按ctrl+alt+T,选择异常捕获
异常之throw和throws
public class Test2 {
public static void main(String[] args) {
try {
new Test2().test(1,0);
} catch (ArithmeticException e) {
e.printStackTrace();
}
}
public void test(int a,int b) throws ArithmeticException{
if (b==0)
{//throws是在方法上抛出异常,throw是在程序中
throw new ArithmeticException();//主动的抛出异常,一般在方法中使用。此时该异常并没有解决,就需要更高级的异常,在方法上。
}
}
}