Java:抽象类、接口、成员内部类

学习资料

b站狂神说:https://www.bilibili.com/video/BV12J41137hu

抽象类

abstract 修饰的类,

// 不能被实例化,new 抽象类()
// 抽象类中可以有普通方法
// 继承抽象类的普通类必须实现抽象类的抽象方法
package com.zy7y.oop;

/**
 * @ProjectName: JavaSE
 * @PackageName: com.zy7y.oop
 * @Author: zy7y
 * @Date: 2020/8/15 下午4:08
 * @Description: 抽象类
 */
public abstract class AbstractClass {
    
    // 抽象类:AbstractClass
    
    // 抽象方法, 只有方法名字
    public abstract void doSomething();
    
    public void hello(){
        System.out.println("hello");
    }
    
    // 不能被实例化,new 抽象类()
    // 抽象类中可以有普通方法
    // 抽象方法必须存在抽象类中
    // 继承抽象类的普通类必须实现抽象类的抽象方法
    
}

接口

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

接口中的常量默认使用public static final 修饰

接口中的方法默认使用public abstract修饰

implements用来实现接口,可实现多个接口,实现接口必须重写接口中的抽象方法

interface关键字定义接口

package com.zy7y.oop;

/**
 * @ProjectName: JavaSE
 * @PackageName: com.zy7y.oop
 * @Author: zy7y
 * @Date: 2020/8/15 下午4:15
 * @Description: 接口
 */
public interface UserService {
    // 接口只能定义方法,不能实现方法,而且默认都是使用  public abstract 实现的
    public abstract void add(String name);

    void delete(String name);

    void select(String name);

    void update(String name);
}

implements实现接口

package com.zy7y.oop;

/**
 * @ProjectName: JavaSE
 * @PackageName: com.zy7y.oop
 * @Author: zy7y
 * @Date: 2020/8/15 下午4:20
 * @Description:
 */
// 使用implements 来实现接口,可多实现UserService,HeroService
    // 实现接口必须重写接口中的抽象方法
public class demo implements UserService{

    @Override
    public void add(String name) {

    }

    @Override
    public void delete(String name) {

    }

    @Override
    public void select(String name) {

    }

    @Override
    public void update(String name) {

    }
}

内部(套娃)类

成员内部类

package com.zy7y.oop;

/**
 * @ProjectName: JavaSE
 * @PackageName: com.zy7y.oop
 * @Author: zy7y
 * @Date: 2020/8/14 下午11:58
 * @Description: 启动方法
 */
public class Application {
    public static void main(String[] args) {

        // 外部类
        InnerClass innerClass = new InnerClass();

        // 实例化内部类
        InnerClass.Inner inner = innerClass.new Inner();
        inner.in();
        inner.getId();
        
    }
}
package com.zy7y.oop;

/**
 * @ProjectName: JavaSE
 * @PackageName: com.zy7y.oop
 * @Author: zy7y
 * @Date: 2020/8/15 下午4:31
 * @Description: 内部类
 */
public class InnerClass {
    // 外部类的属性
    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);
        }
    }
}
作者:zy7y
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/zy7y/p/13509308.html