java就业13-2

今天是接口 抽象类 final 枚举

查缺补漏吧 难度应该不大


抽象类:

抽象方法:没有方法体 只有方法签名必须用abstract修饰 用有抽象方法的类必须定义成抽象类

抽象类的使用:

package com.itheima._01抽象类的概述;
 * Description: 抽象类的概述
 * 抽象类: 父类知道子类一定要完成某个功能 但是子类完成的情况不一样
 * 子类以后也会重写自己的功能 那么父类的功能就可以定义为抽象方法 子类重写调用自己的子类
public class Abstract_Demo {
    public static void main(String[] args) {
        Dog taidi = new Dog();
        taidi.run();
    }
}

//class Animal {
//    //子类要完成这个功能 由子类自己重写完成 因为每次都要重新实现
//    //抽象类就不用方法体了
//    public void run() {
//        System.out.println("动物跑的很快");
//    }
}

abstract class Animal {
    //子类要完成这个功能 由子类自己重写完成 因为每次都要重新实现
    //抽象类就不用方法体了
    public abstract void run();

}

class Cat extends Animal {
    @Override
    public void run() {
        System.out.println("猫跑的快");
    }
}

class Dog extends Animal {
    @Override
    public void run() {
        System.out.println("狗跑的快");
    }
}

继承抽象类 必须重写完抽象类的全部方法 抽象类里面有几个必须全部实现

package com.itheima._02抽象类的使用;
public class AbstractDemo {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        teacher.work();
        Manager manager = new Manager();
        manager.work();
    }
}

//需求 员工管理系统
abstract class Employee {
    //子类完成工作内容  每个工作的内容不一样
    public abstract void work();
}

class Teacher extends Employee {
    @Override
    public void work() {
        System.out.println("老师需要上课");
    }
}

class Manager extends Employee {
    @Override
    public void work() {
        System.out.println("班主任需要管理学生");
    }
}

抽象 类有构造器 必须有构造器 提供给子类创建对象 调用父类使用 但抽象了不可以创建对象

抽象不可以具体化 哪怕里的方法不是抽象的 有实例对象

 

 

package com.itheima._03抽象类的特征;
public class AbstarctDemo {
    public static void main(String[] args) {
        Animal a = new Animal();

    }
}

abstract class Animal {

    //    public abstract void run();
    private String name;

    //实例化方法//静态方法
    public void test() {

    }

    //抽象方法
    public abstract void run();
//构造器
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 


接口复习:接口是规范 通用标准 只有抽象方法跟常量

 

 

package com.itheima._07接口概述;
 * Description:接口概述
 * 借口提现的是规范思想 实现接口的子类必须重写完接口的全部方法
 * 接口的定义格式
 * 修饰符:interface 接口名称
 * 1.8之前只有抽象方法跟常量

public interface InterfaceDemo {
    //抽象方法 public abstract 可省略
    public abstract void run();

    public abstract void work();

    //常量 不可以写静态变量 静态变量属于类本身
//    public static String schoolName;
    //final在运行当中不可更改 变量值只有一个而且在程序运行的过程中不可更改
    //public static final  这是静态常量 大写 借口中可以省略不写 默认加上
//    public static final String SCHOOL_NAME = "黑马";
    String SCHOOL_NAME = "黑马";
    //接口里面的内容是公开的
}

接口与接口之间多实现 接口之间的多继承

接口中没有构造器 不能创建对象


静态代码块

package com.itheima._13代码块;

import java.util.ArrayList;
import java.util.List;


 * Description:静态代码块
 * 类由五大成分 成员变量 方法 构造器 代码块 内部类
 * 有误static 修饰可以分为静态代码块 实例代码块
 * 静态代码块 必须用static 修饰 是类 可以跟类一起优先加载 而且自动触发执行 static先执行
 * static{
 * }
 * 静态代码块可以在执行类之前进行静态资源的初始化操作

public class Code1 {
    public static List<String> cards = new ArrayList<>();

    static {
//        提前准备 代码优雅
        System.out.println("静态代码块");
        cards.add("黑桃3");
    }

    public static void main(String[] args) {

    }
}
package com.itheima._13代码块;


 * Description: 实例代码块
 * 无static 属于类的每个队形 会与类的每个对象一起加载
 * 每次创建对象的时候加载
 * 格式{
 * }
 * 实例代码块的代码实际上是提取到每个构造器器中实现

public class Code2 {
    private String name;

    {//每次创建对象都会调用
        System.out.println("实例代码块执行一次");
        name = "balck";
    }

    public static void main(String[] args) {
//        System.out.println("main方法");
        Code2 code21 = new Code2();
        System.out.println(code21.name);
        Code2 code22 = new Code2();
        System.out.println(code22.name);
    }

}

final关键字

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值