java中的抽象类(abstract)

前言:
当我们在创建一个动物类的同时在这个类中创建动物对象,但是当你提到动物类,你并不知道我说的是什么动物,只有看到了具体的动物对象,你才知道这是什么动物,所以说动物本身并不是一个具体的事物,而是一个抽象的事物。只有真正的猫,狗才是具体的动物,同理我们也可以推理不同的动物,他们的行为习惯应该是不一样的,所以我们不应该在动物类中给出具体体现,而是给出一个声明即可。因此,这样的一个动物类才是抽象类,而狗,猫才是实体对象类。

抽象类

限制这个类不能被实例化,只能被继承

语法:

public abstract class 类名(){}

抽象类包含哪些东西:

1.属性

2.普通方法

3.构造方法

4.抽象方法(可以有可无)

父类定义某个方法,但是这个方法实现不重要,但这个方法一定需要子类去重写,强制性的,子类不重写就会报错

抽象类不一定包含抽象方法,抽象方法一定要写在抽象类中

抽象方法就可以实现上面的问题,抽象方法等着子类去重写

语法:
public abstract 返回值类型 方法名([参数列表]);
// Animal类 
public abstract class Animal {
    String name;//属性
    
    public void sleep() { //普通方法
        System.out.println("我趴着睡");
    }
    
    public Animal(){//构造方法
   	     System.out.println("这是无参构造器。。。。");
    }
    
    public abstract void eat();  //抽象方法
}

实现狗类继承动物类:

/**
 * 狗类
 */
public class Dog extends Animal {

    @Override
    public void eat() {
        super.sleep();
        System.out.println("狗吃骨头~~~");
    }
}

调用:

/**
 * 调用
 */
public class Test {
    public static void main(String[] args) {
        Dog dog=new Dog();//new一个对象出来
        dog.eat();
    }
}

结果:
这是无参构造器。。。。
我趴着睡
狗吃骨头~~~

注意:

如果父类定义抽象方法,

子类有两种解决方案:

​ 1)子类变为抽象方法;

​ 2)子类重写父类的全部抽象方法

细节:

1)抽象方法不能用private修饰

2)抽象方法不能使用static修饰

3)抽象方法不可以使用final修饰

接口

接口其实是一个更抽象的抽象类,只包含 常量抽象方法

关键字:interface

定义语法:

public interface 接口名{
	//常量
	 public static final double PI=3.1415926;
	//抽象方法
	 public abstract 返回值类型 方法名([参数列表]);
	 //。。。
}

借口不能实例化,等待其他类去实现class A implements B,C,D{},接口相当于父类

public interface UseInterface {
//属性  报错
//String name;

//常量  ,可以省略 public static final
//只能写  public static final
double PI = 3.14;

//构造方法  报错
//public UseInterface(){};

/*//非抽象方法   ,不能包含
public void fun1(){

}*/

//抽象方法 ,可以省略 public abstract
//只能写 public abstract
void service();

/*//jdk1.8 特有
default void fun1(){

}*/
}
public class UDisk implements UseInterface,Save{//接两个接口

//实现接口的抽象方法
@Override
public void service() {
   System.out.println("正在传输数据。。。");
}

@Override
public void save() {
   System.out.println("正在保存数据。。。");
}
}

经验:

我们可以定义一个没有任何抽象方法的接口,作为一种标签,类实现接口表示该类贴了这个标签

注意:

类 extends 类

类 implements 接口1,接口2.。。。

接口 extends 接口1,接口2.。。。

类 extends 类 implements 接口1,接口2.。。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小温豌豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值