ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

面向对象-补充说明(static,抽象类,接口,内部类)

2022-07-06 08:31:20  阅读:88  来源: 互联网

标签:void 接口 面向对象 static 抽象类 方法 public


面向对象-补充说明(static,抽象类,接口,内部类)

在上面我们已经接触到了面向对象的类和对象

接下来我们讲解一下static,抽象类,接口,内部类:

static

我们先从基本的static讲起:

  • static:属于类,可直接调用或采用 类.方法()调用
  • 非static:属于对象,只能采用 对象.方法()调用

在static扩展中我们将讲到匿名代码块和静态代码块

这两者可写于类中:

public class application {

    //匿名代码块
    {
        System.out.println("匿名代码块");
    }

    //静态代码块
    static {
        System.out.println("静态代码块");
    }

    //构造方法
    public application(){
        System.out.println("构造方法");
    }

    //main函数
    public static void main(String[] args) {
        application app = new application();
    }
}

结果:

静态代码块
匿名代码块
构造方法

我们可以看到在类的产生过程中,各部分的生成先后顺序是:静态代码块,匿名代码块,构造方法。

抽象类

概念:

  • 抽象类中可以包含未被定义的抽象方法,有利于后者重构

抽象定义:

public abstract class 抽象类名{
    ...
    //抽象类中可包含未被定义的抽象方法
    public abstract void 抽象方法名();
    ...
    //抽象类中也可包含定义的方法
    public void 抽象方法名();
    ...
}

代码展示:

//abstract象征抽象,这里指抽象类,抽象类可以含有抽象方法和具体方法
public abstract class A {

    //abstract象征抽象,这里指抽象方法,抽象方法不需要写方法体。(有抽象方法就要保证是抽象类)
    public abstract void run();

    public void say(){
        System.out.println("hello");
    }

}
//这里B继承A,保证B里面有A的抽象方法的全部重构
public class B extends A{

    public void run(){
        System.out.println("run");
    }
}
//这里C继承A,把C也定义为抽象类可以保证C称为A的子类
public abstract class C extends A{


}

抽象类总结:

  • 抽象类可以没有抽象方法;但抽象方法一定属于抽象类
  • 抽象类不能使用new来创建对象,只能由子类继承
  • 抽象方法只有方法的声明,没有方法的方法体,由子类书写
  • 子类继承抽象类,要么实现抽象类的所有抽象方法,要么子类本身也是抽象类
  • 子类只能继承一个抽象类;但子类可以继承多个接口

接口

普通类,抽象类,接口的区别:

  • 普通类:只有具体实现
  • 抽象类:具体实现抽象方法都有
  • 接口:只有抽象方法

接口定义:

//interface标识接口
public interface UserSerivce{

    //在接口类中定义一些方法,不需要写方法体
    //方法默认为public,abstract
    void run();

    //接口方法可设置参数
    String setName(String name);

}

接口继承方法:

//接口继承采用implements,可继承多个接口,需要补充继承接口的所有方法
public class UserServiceImpl implements UserSerivce,TimeSerivce{

    public void run(){

    }

    public String setName(String name){
        return "ccc";
    }

    public void jump(){

    }
}

接口作用:

  • 约束作用
  • 定义方法,分组实现

接口注意点:

  • 所有接口都是public abstract

  • 所有属性都是public static final

  • 接口不能被实例化,接口中没有构造方法

  • implement 可以实现多个接口

  • 必须重写接口的方法

内部类(拓展)

内部类定义:

  • 在一个类的内部再定义一个类

内部类在后面我们会再提起,所有这里先讲述一种类型:成员内部类

概念:

  • 定义在一个类里面的另一个类
//成员内部类
public class A {

    private int id;
    public void out(){
        System.out.println("成员外部类");
    }

    public class Inner{

        public void in(){
            System.out.println("成员内部类");
        }

        public void getID(){
            System.out.println(id);
        }

    }
}

成员内部类可以直接使用外部类的private属性

public class application {
    public static void main(String[] args) {

        //定义外部类
        A a = new A();
        a.out();

        //用外部类来实化内部类
        A.Inner aa = a.new Inner();
        aa.in();
        aa.getID();
    }
}

结束语

好的,这节的重点主要在抽象类和接口,好好掌握

标签:void,接口,面向对象,static,抽象类,方法,public
来源: https://www.cnblogs.com/qiuluoyuweiliang/p/16449347.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有