关于java:面向对象抽象类接口内部类

9次阅读

共计 2068 个字符,预计需要花费 6 分钟才能阅读完成。

抽象类:


抽象类的概念:

Java 中能够定义没有办法体的办法,办法的具体实现由子类实现,该办法称为形象办法,蕴含形象办法的类就是抽象类;

通常在编程语句中用 abstract 润饰的类是抽象类。抽象类是不残缺的,它只能用作基类。在面向对象办法中,抽象类次要用来进行类型暗藏和充当全局变量的角色。

抽象类的特点:

1)抽象类和形象办法必须用关键字 abstract 润饰
2)抽象类中不肯定有形象办法, 然而有形象办法的类肯定是抽象类
3)抽象类不能实例化

语法格局:

修饰符 abstract 返回值类型 办法名([参数列表]);

[public] abstract class ClassName {
    // 能够定义类所有的内容
    // 能够定义接口中所有的内容
}

抽象类的申明:

语法:修饰符 abstract class 类名 extends 父类名
抽象类中能够没有形象办法;然而一旦某个有形象办法,那么这个类必须被申明为抽象类。

抽象类和一般类的次要区别:

1)形象办法必须为 public 或者 protected(因为如果为 private,则不能被子类继承,子类便无奈实现该办法),缺省状况下默认为 public。
2)抽象类不能用来创建对象;
3)如果一个类继承于一个抽象类,则子类必须实现父类的形象办法。如果子类没有实现父类的形象办法,则必须将子类也定义为为 abstract 类。

接口:


接口(interface),在软件工程中,接口泛指供他人调用的办法或者函数。

语法:修饰符 interface 接口名{[常量];[形象办法];}

[public] interface 接口名{
     // 定义常量
     public static final 数据类型 常量名 = 值;
     // 定义形象办法
     public abstract 返回值类型  办法名(数据类型 参数名,...);
}

接口中形象办法能够不写 abstract 关键字,拜访修饰符默认 public
接口中所有的办法不能有具体的实现,当类实现接口时,须要去实现接口中的所有形象办法,否则须要将该类设置为抽象类;
接口中能够蕴含常量,默认 public static final
接口也能够实现继承,并且能够继承多个父接口

抽象类和接口的类似:

1)不能实例化;
2)蕴含未实现的办法申明;
3)派生类必须实现未实现的办法,抽象类是形象办法,接口则是所有成员(不仅是办法包含其余成员)。

抽象类和接口的区别:

1)抽象类能够提供成员办法的实现细节,而接口中只能存在 public abstract 办法;
2)抽象类中的成员变量能够是各种类型的,而接口中的成员变量只能是 public static final 类型的;
3)接口中不能含有动态代码块以及静态方法,而抽象类能够有动态代码块和静态方法;
4)一个类只能继承一个抽象类,而一个类却能够实现多个接口。
5)抽象类是对一种事物的形象,即对类形象,而接口是对行为的形象。

外部类:


定义在其余类外部的类。

外部类能够分为:

1)成员外部类:

  • 定义在外部类的成员(属性、办法)地位
  • 能够应用四种拜访权限修饰符润饰外部类
  • 能够在内部类的外部定义属性和办法
    例:
public class Outer {
    private int a = 1;
    // 成员外部类
    class Inner{public void print(){
            // 能够拜访外部类的公有属性
            System.out.println(a);
        }
    }
}

创立外部类对象:先要创立外部类对象,而后应用外部类对象创立外部类对象

// 创立外部类对象
Outer out = new Outer();
// 创立外部类对象
Outer.Inner in = out.new Inner();
in.print();

2)动态外部类:

  • 动态外部类是在内部类后面加上 static
  • 动态外部类不须要创立内部对象
  • 只能拜访外部类动态的属性或办法
  • 拜访动态外部类当中的动态成员:Outter.Inner.color
    例:

    public class Outer {
        private int a = 1;
        private static int b = 2;
        // 动态外部类
        class static class Inner{public void print(){
                // 只能拜访动态属性
                System.out.println(b);
            }
        }
    }

3)部分外部类:

  • 部分外部类只能定义在办法当中应用
  • 部分外部类当中是不能蕴含动态变量
  • 部分外部类当中能够蕴含局部变量,应用的局部变量的实质是 final 变量
    例:

    public class Outer {
        private int a = 1;
        private void print(final int b){
        // 部分外部类
        class Inner{public void print(){System.out.println(a);
                System.out.println(b);
                }
            }
        }
     }

4)匿名外部类:(属于部分外部的一种非凡状况)

  • 匿名外部类不晓得类名,所以不能定义构造方法,只能应用默认无参的构造方法。
  • 只应用一次的时候,就应用匿名外部类
  • 匿名外部类必须晓得它的父类或实现的接口

应用外部类的意义:

1)加强封装,把外部类暗藏在外部类当中,不容许其余类拜访这个外部类
2)减少了代码一个维护性
3)外部类能够间接拜访外部类当中的成员

正文完
 0