面向对象高级部分

一、知识点

1.1  继承

1.2  抽象类

1.3  接口

1.4  多态

二、具体内容

举个例子:人类,有姓名,年龄的属性和说话的方法

     学生类,姓名、年龄、学号的属性和说话、考试的方法

     Strudent类比Person类多了学好的属性和考试的方法

    public class Student extends Person{

      private String stuNo;

      public String getStuNo(){

      return stuNo;

      }

      public String setStuNo(String stuNo){
      this.stuNo=stuNo;

      }

      public void test(){

      }

    }

继承的功能:

  通过继承可以简化子类的定义

  通过继承可以扩展子类的功能

  继承具有层次结构

  子类可以继承父类的一切非私有的属性和方法,子类扩展了父类的功能,同时把父类一切非私有的属性全部都继承了下来

继承的规定:

  java只支持单继承//不能extends perosn,anotherPerson

  java允许多层继承:

  在实例化子类对象的时候,会先调用父类的构造方法再调用子类的构造方法,调用父类的构造方法就是为了给子类对象开辟空间,并且可以为类中的属性初始化值。

讲一下this,和super关键字的区别,this本类中的对象属性和方法,super父类中的对象和属性和方法,具体区别如图

  


序号


this


super


1调用属性


调用本类属性


调用父类属性


2调用方法


调用本类方法


调用父类方法


3调用构造方法


调用本来构造方法


调用父类构造方法


4表示对象


表示当前类对象


表示的父类的对象

重点,方法覆写和重载的区别

在继承关系中子类复写父类的方法,实现不同的功能,叫做方法的复写,在复写之后子类调用的永远都是子类复写之后的方法,子类复写之后的方法权限不能小于父类被复写方法的访问权限


序号


覆写


重载


1概念


方法名称一样,访问权限大于或等于父类被复写方法的权限,参数相同,返回值类型相同


方法名称相同,返回的参数的个数,类型,顺序不同


2使用范围


在继承关系中


在同一个类中

重点,抽象类和接口

相同:都不能直接实例化

不同:抽象类包含抽象方法,一般方法、常量、变量、可以有构造、抽象类可以实现接口、只能单继承

   接口只有抽象方法和常量、不能有构造、不能继承抽象类、可以多继承实现


抽象类


接口


相似


不能直接实例化


不同


包含抽象方法,一般方法,常量,变量


只有抽象方法和常量


可以有构造方法


不能有构造方法


抽象类可以实现接口


接口不能继承抽象类


单继承的局限


多继承多实现

重点,多态

     方法的重载和覆写是面向对象多态性的一个体现

抽象类的子类对象可以作为抽象类对象使用

接口的实现类对象可以作为接口的对象使用

/**

* 抽象类

* @author Administrator

*

*/

    public abstract class SSEPTMOKE {

          void smoking();//抽象方法

    }

    

    public class OopDemo02 {

      public static void main(String[] args) {

         SMOKE smoke = new SEPTSMOKE();//子类对象作为父类对象使用

         smoke.smoking();

        A a = new AImp();//实现类对象作为接口对象使用

       }

    }    

时间: 2024-12-16 13:49:01

面向对象高级部分的相关文章

Python3 面向对象 高级编程

正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.  class Student(object): pass 然后,尝试给实例绑定一个属性: >>> s = Student() >>> s.name = 'Michael' # 动态给实例绑定一个属性 还可以尝试给实例绑定一个方法: >>> def set_age(self, age): # 定义一个函数作为实例方法 ...

Day7 - 面向对象高级语法

参考文章:http://www.cnblogs.com/alex3714/articles/5213184.html 本节内容: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊成员方法 反射 静态方法                                                                                   通过 @staticmethod 装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可

C++面向对象高级编程(九)Reference与重载operator new和operator delete

摘要: 技术在于交流.沟通,转载请注明出处并保持作品的完整性. 一 Reference 引用:之前提及过,他的主要作用就是取别名,与指针很相似,实现也是基于指针. 1.引用必须有初值,且不能引用nullptr 2.引用之后不能再引用别人 3.引用通常不用于声明变量,多用于参数类型,和返回值类型 见下面代码 int main(int argc, const char * argv[]) { int x=0; //p is a pointer to x int* p = &x; // r is a

C++面向对象高级编程(七)point-like classes和function-like classes

技术在于交流.沟通,转载请注明出处并保持作品的完整性. 1.pointer-like class 类设计成指针那样,可以当做指针来用,指针有两个常用操作符(*和->),所以我们必须重载这两个操作 /*简单实现一下智能指针的*与 -> 操作符*/ template <class T> class shared_ptr_test { public: T& operator* () const //重载* { return *px; } T* operator->() co

python基础--面向对象高级、异常处理、网络编程

一.面向对象高级 1.接口与归一化设计 接口只是定义了一些方法,而没有去实现,多用于程序设计时,只是设计需要有什么样的功能,但是并没有实现任何功能,这些功能需要被另一个类(B)继承后,由 类B去实现其中的某个功能或全部功能. 在python中接口由抽象类和抽象方法去实现,接口是不能被实例化的,只能被别的类继承去实现相应的功能 归一化让使用者无需关心对象的类是什么,只需要知道这些对象都具备某些功能就可以了,这极大地降低了使用者的使用难度. 归一化使得高层的外部使用者可以不加区分的处理所有接口兼容的

C++面向对象高级编程(六)转换函数与non-explicit one argument ctor

技术在于交流.沟通,转载请注明出处并保持作品的完整性. 1.conversion function 转换函数 //1.转换函数 //conversion function //只要你认为合理 你可以任意写转换函数 class Fraction { public: Fraction(int num, int den = 1):m_numerator(num),m_denominator(den){} operator double() const //注意看 没有返回类型,这个编译器会帮做,且防止

Python自动化 【第七篇】:Python基础-面向对象高级语法、异常处理、Scoket开发基础

本节内容: 1.     面向对象高级语法部分 1.1   静态方法.类方法.属性方法 1.2   类的特殊方法 1.3   反射 2.     异常处理 3.     Socket开发基础 1.     面向对象高级语法部分 1.1   静态方法.类方法.属性方法 1)   静态方法 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法.普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访

C++面向对象高级编程(三)

版权声明:本文为博主原创文章,未经博主允许不得转载. 接下来的几篇文章,我将回忆一下C++的基础. C++的由两部分组成 1.C++语言 2.C++标准库 本篇文章主要分享我学习C++语言的笔记. 本节主要介绍 Big Three 即析构函数,拷贝构造函数,赋值拷贝函数,前面主要围绕不带指针的class complex本节中主要围绕带指针的String类 前面我说过如果你创建的类不带有指针,那么多半你可以不用写析构函数,但是如果你创建了一个带指针的类,那么你必须重写Big Three 创建一个类

极客班GeekBand - C++面向对象高级开发 - 2

极客班GeekBand - C++面向对象高级开发 - 2 极客班GeekBand - C面向对象高级开发 - 2 讲师 - 侯捷 复习Complex类的实现过程 三大函数拷贝构造拷贝复制析构 栈堆与内存管理 Stack VS Heap stack objectsstatic local objectsglobal objects的生命期 heap objects的生命周期 new先分配memory再调用ctor delete先调用dtor在释放memory 动态分配所得内存块memory bl

面向对象(高级篇之抽象类与接口的应用)

抽象类的实际应用-----模板设计 接口的实际应用--------制定标准 设计模式-------工厂设计 程序在接口和子类之间加入了一个过渡端,通过此过渡端取得接口的实例化对象. 设计模式-------代理设计 所谓的代理设计就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理. 相当于我玩一个游戏需要登录游戏,在这个登录的时候可以设计两个类,一个是登录,另一个是检验你的用户名与密码,而登录是附着在检验类上的. 设计模式-------适配器设计 对于