继承,抽象类,接口

继承,抽象类,接口

Java面向对象的三大特性:封装性、继承性、多态性

说一说继承性

我学到继承性之后虽然都了解继承性当中的继承、抽纸类、接口的具体使用方法及特点,但是对概念还是不够深刻,不理解他们之间的联系意义。然后查了好多资料,在这写下我的感悟

继承

为什么有这个继承呢,主要优点在于:

  • 功能复用
  • 便于扩展新功能
  • 结构清晰、简化认识
  • 易维护性

所以关于继承最核心的还是在于:父类中存放的是子类的共性,这里的共性指的是共同属性和共同方法。父类抽取共性,子类继承共性,子类可以拥有个性。

举个例子

public class Animal{
    private String name;
    public void eat(){
        System.out.println("吃饭");
    }
    public void sleep(){
        System.out.println("睡觉");
    }
    //getter,setter
}
public class Cat extends Animal{
    public void eat(){
        System.out.println(getName()+"吃猫食");
    }
    public void play(){
        System.out.println("躲猫猫");
    }
    super.sleep();
}
public class Dog extends Animal{
    public void eat(){
        System.out.println(getName()+"吃狗食");
    }
    public void run(){
        System.out.println("遛狗");
    }
    super.sleep();
}

猫与狗的共性就是他们都是动物,并且拥有名字,具有吃的能力,睡觉。所以猫与狗共同继承动物这个父类,而动物父类提取猫与狗之间的共性就是【有名字】,【能够吃饭】,【睡觉】。而同时子类可以拥有自己的个性,可以覆盖重写自己的吃饭的方法,也可以扩展其特有方法。

所以拥有继承的好处就显而易见了。

抽象类

在了解完继承后,又开始了抽象类,学完抽象类之后我又懵了,就不停再想为什么要有这个抽象类的存在。

而在上面继承里说:父类抽取共性,子类继承共性,子类可以拥有个性

但是!共性中也是会存在个性的!

啥意思呢-->在代码中,虽然猫与狗都能够吃饭,但是吃的东西却不一样,所以这才覆盖重写了eat()方法,从而导致父类中的eat()方法中的内容则显得多余。而假设多个子类拥有众多的共性,但共性又不是都一致,所有在子类中已经覆盖重写父类方法的同时,还有必要在父类方法里添加方法体吗。

所有这里引入了抽象类这个概念,将父类定义为抽象类,这样父类中的方法不必添加方法体,因为共性就是一个模糊的概念,我们不可能在这样的模糊的前提下去定义具体事务而被所有的子类所继承,继承的终究不符合子类,是一定被覆盖重写。

public abstract class Animal{  //抽象类不一定包含抽象方法,有抽象方法那么类一定是抽象类。
    private String name;
    public abstract void eat();//抽象方法
    public void sleep(){
        System.out.println("睡觉");
    }
    //getter,setter
}

接口

接口与抽象类的概念大致相似,只是接口是对外提供的一组规则、标准。而类与接口之间是实现关系。实现类就是实现接口的功能。

接口使用步骤:

1.接口不能直接使用,必须有一个"实现类"来"实现"该接口

接口

public interface 接口名称{
     //抽象方法
     //默认方法
     //静态方法
     //私有方法
}

实现类

public  class   实现类名称  implements  接口名称{
//....
}

2.接口的实现类必须覆盖重写(实现)接口中所有的抽象方法。

3.创建实现类的对象,进行使用

注意事项:如果实现类并没有覆盖重写接口中所有的抽象方法,那么这个实现类自己就必须是抽象类

原文地址:https://www.cnblogs.com/snowind/p/12608055.html

时间: 2024-10-26 00:16:20

继承,抽象类,接口的相关文章

第三章:继承/抽象类/接口

继承 在面向对象编程中,有两种截然不同的继承类型,实现继承和接口继承;C#中不支持多重继承,C#类可以派生自另一个类和任意多的接口 实现继承:表示一个类型派生自一个基类型,它拥有该基类型的所有成员字段和函数,在需要给现有类型添加功能或者许多相关类型共享一组重要的公共功能时.这种类型继承非常有用 接口继承:表示一个类型只继承了函数的签名,没有继承任何的实现代码 实现继承virtual/override /// <summary> /// 基类 /// </summary> class

java----基础(this,继承,多态,抽象类,接口)

this指针 this指针在类定义时用到,this属于用类实例化的对象,只能在定义类的时候使用:(在下面的代码中会有体现) 类变量&类方法 定义: 访问修饰符 static+数据类型+变量名 所有该类的对象均可访问,均可修改,不会在调用后初始化,相当于全局变量. 可以被所有对象访问到,并且可以通过类访问到  类名.类变量 静态方法 == 类方法 可以被类名和对象访问到 原则上类变量用类方法来访问 类方法中不能访问非类变量,类变量可以被非类方法访问. 四种访问控制符: public : 对外公开

[原创]抽象类实现接口,子类继承抽象类,这三者之间的关系?

①一个类实现一个接口,那么这个类必须实现该接口中的所有方法,因为接口中的方法默认都是 public,abstract类型的,所以实现接口的类都必须重写该接口中的所有方法,比如: interface A { boolean add(); boolean offer1(); boolean offer2(); } public class Test01 implements A{//必须实现A接口中的所有方法 @Override public boolean add() { return false

基础学习day07---面向对象三---继承,接口与 抽象类

一.继承 1.1.继承概念 将对象的共性抽取出来.提取出一个单独的类. 继承使用复用以前的代码非常容易,能够大大的缩短开发周期,降低开发成本,同时增加程序的易维护性 继承使重一个类A能够直接使用另外一个类B的属性和方法的一种途径 类A可以有自己的属性和方法通过 extends 关键字让类与类之间产生继承关系. 让类和类之间产生了关系,有了这个关系,才有了多态的特性. 注意:千万不要为了获取其他类的功能,简化代码而继承. 必须是类与类之间有所属关系才可以继承,所属关系是 is  a.的关系 1.2

12.面向对象(继承/super/接口/抽象类)

面向对象继承与派生继承继承顺序继承原理子类调用父类的方法(super)组合接口接口的概念:接口的概念解释和使用:python中的接口:抽象类 面向对象 继承与派生 继承 什么是继承?继承是一种创建新的类的方式 class A: pass class B(A): pass 在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或者超类,新建的类称为派生类或者子类 python中类的继承分为,单继承和多继承. 查看继承的方法B.__bases__ 如果没有指定基类,python的类会默

Java回顾:用一个Demo来说明继承抽象类和实现接口的简单框架模型

大家都知道,在java应用开发中,要"面向接口编程". 那么什么是接口?接口有什么作用?接口如何使用?我们一起来回顾一下. [声明]欢迎转载,但请保留文章原始出处:http://blog.csdn.net/yelangjueqi/article/details/44701369 1,接口回顾: 1.1,Java中接口的概念 在Java中接口是一种特殊的抽象类,跟一般的抽象类相比,接口里面的所有方法都是抽象方法,接口里面的所有属性都是常量.也就是说,接口里面只有方法定义而没有任何方法实现

php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一系列个体的集合,类是一个抽象的概念2.什么是对象?从类中拿到的具有具体属性值得个体,称为对象,对象是一个具体的个体 所以,面向对象即我们专注对象来处理问题,通过从一个个具有属性和功能的类中拿到对象来处理问题. 下面我们再来细说下面向对象的三大特征:继承/封装/多态 一.继承 在PHP中我们主要通关E

修饰、继承、接口、抽象类

 1.private 修饰属性或者方法,只能在本类中被访问,定义后需要加get()set()方法,这样提高数据的安全性 私有属性虽然不能直接访问,但是其对象 或者 子类对象可以通过公有方法进行设值和获取,这就是为什么最好加get和set方法 私有方法存在于本类并且不能在其他类中被使用 package my_acm; class Hello{ private int id=12; public int getid(){ return this.id; } public void Setid(int

继承、接口和抽象类

继承 子类继承父类 物以类聚->提取共同点形成父类(parent)/基类(base)/超类(super) 子类/派生类继承父类 子类也会继承父类的属性(成员变量)和方法,私有的成员变量(private)除外,private变量要用public方法去访问. 同名同参情况下,本类的方法会比父类的方法优先级高. 单根继承:每个类都只能继承一个类(C++可以多个类) 不写extends,java类默认继承于java.lang.Object类,默认有方法toSrting,clone,equals,fina

this/super/static/final/匿名对象/继承/抽象类/访问权限修饰符

1.this关键字的作用     1)调用本类中的属性;     2)调用本类中的构造方法;且只能放首行,且必须留一个构造方法作为出口,即不能递归调用     3)表示当前对象; 2.匿名对象     直接new出来的对象,不创建变量名,且只能使用一次,通常作为方法的参数及返回值使用 3.继承     继承是面向对象的三大特征之一,通过关键字:extends实现,被继承的类称为父类(也称作基类/超类),实现继承的类称为子类(也称作派生类).     特点:     (1)通过继承,子类可以直接访