面向对象特性一

面向对象特性

封装

  • 定义:隐藏对象得属性和实现细节, 仅仅对外提供公共访问得方法
  • 好处: 将变化隔离, 便于使用; 提高重用性,安全性。
  • 原则:将不需要对外提供得内容隐藏起来, 把属性隐藏起来,提供公用得方法对其访问。
  1. this: 式对象得引用代表对象。作用是减少命名得冲突。
  2. static:是静态修饰符,是静态关键字。

    特点:

    1. 通过它实现对象之间数据得共享
    2. 可以通过类名直接调用
    3. 静态随着类加载而加载, 它优于对象存在

注意点:

  • 某个对象需要特别持有得数据是不能够被静态修饰否则, 共享
  • 因为静态方法优先于对象加载, 所以不可访问非静态得方法
  • 静态方法中没有对象这个概念, 也就不能用对象所特有得super, this 关键字得使用
  • 主函数是静态得, 加载顺序是和静态方法平级,按照排列顺序加载。

3.什么时候定义静态:

公用同一个方法或者变量得时候可以定义成静态得

4. 成员变量和静态变量得区别

  1. 成员变量属于对象,也被称为实例变量。静态对象属于类, 被称为类对象
  2. 成员变量存放在堆中,静态变量存放在方法区中
  3. 成员变量随着对象创建而存在, 随着对象被回收, 而静态变量随着类加载而存在, 随着类得消失而消失,所以静态变量得生命周期较长
  4. 成员变量指能被对象所调用, 静态对象可以被对象调用, 也能被类名调用。

静态代码块、构造代码块、构造函数同时存在时的执行顺序:

静态代码块> 构造代码块 > 构造函数;

关于设计模式:

就是一套经验总结出来得模式或者称为棋谱,java中有23种设计模式

5. 单例设计模式

思想:

  1. 不让其他程序创建该类对象
  2. 在本类中创建一个本类对象
  3. 对外提供方法

第一点:可将构造方法私有化实现。

代码体现:

//饿汉式
class Single{
private Single(){} //私有化构造函数。
private static Single s = new Single(); //创建私有并静态的本类对象。
public static Single getInstance(){ //定义公有并静态的方法,返回该对象。
return s;
}
}
//懒汉式:延迟加载方式。
class Single2{
private Single2(){}
private static Single2 s = null;
public static Single2 getInstance(){
if(s==null)
s = new Single2();
return s;
}
}

继承

  1. 好处: 提高代码复用性, 让类与类之间产生了关系提供了多态的前提。
  2. 父类的由来:多个类不断向上抽取共性的内容
  3. Java中只支持单继承不支持多继承,因为多继承让项目变得更加复杂。
  4. super:父类内存空间中的引用
  5. this: 本对象的引用
  • 第一:两者是否同时出现:因为都要定义在第一行所以不能
  • 第二:为什么要定义在第一行:这两者是用于调用构造方法的, 构造方法初始化操作要先于完成

6. 什么时候使用继承:当符合is-a

方法覆盖时候,注意两点:

子类覆盖父类, 必须要保证子类的访问权限不低于父类的访问权限

  1. final特点:
  2. 这个关键字是一个修饰符, 可以修饰类, 方法, 变量
  3. 被final修饰的类是一个最终类, 不可以被继承
  4. 被final修饰的方法是最终方法, 不可以被覆盖
  5. 被final修饰的变量是一个常数,只能赋值一次。
时间: 2024-10-09 01:40:09

面向对象特性一的相关文章

Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇

Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript时,可以选择面向过程的方式编程,显得高效:但在实际工作中,遇到的项目需求和框架较大的情况下,选择面向对象的方式编程显得尤其重要,Javascript原生语法中没有提供表述面向对象语言特性的关键字和语法(如extends.implement).为了实现这些面向对象的特性,需要额外编写一些代码,如下.

TypeScript -- 面向对象特性

面向对象特性 一.类(class)--TypeScript的核心,使用TypeScript开发时,在部分代码都是写在类里面的. 1.class关键字和类名就可以定义一个类 . 类的访问控制符--有三个,public,private,protected class Person { public name;//public(公有的)访问控制符,其为默认的private eat() {//private为私有的访问打控制符console.log('im eating'); } protected a

Java语言中的面向对象特性

1.1 面向对象的基本概念  面向对象的基本思想  面向对象是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象.类.继承.封装.消息等基本概念来进行程序设计.从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式.开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称作该软件的问题域.其应用领域不仅仅是软件,还有计算机体系结构和人工智能等. 1. 对象的基本概念  对象是系统中用来描述客观事物的一个实体

PHP中面向对象特性实现

PHP近些年来成为全球最流行的网页编程语言,该语言以弱类型.易兼容.门槛低.开发快.功能强著称,且听别人这么说,我在有了c和c#基础后学习PHP过程中也并不是很顺利,该语言的一些特殊的语法规则又是让我混淆,不过不得不说,它让编程变得更加容易了.大家可能学习过C++或C#,应该知道面向对象的三大特征:封装性.继承性.多态性.其实任何一门编程语言,除了语言特有的API不同外,语言本身的编程思想和理念是想通的.现在,就让我带你走进PHP中面向对象特性的实现方式. 首先必须明白PHP为面向对象设定的6个

Java语言中的面向对象特性总结

[课前思考]  1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类?  2. 面向对象编程的特性有哪三个?它们各自又有哪些特性?  3. 你知道java语言在面向对象编程方面有何独特的特点吗? 难点:  1. 理解方法重载和方法重写,不要混淆了两者的使用.  2. 类变量和类方法的使用.  3. 接口的使用. 3.1 面向对象技术基础 http://hovertree.com/menu/java/ 3.1.1 面向对象的基本概念  面向对象的基本思想  面向对象是一种新兴的程序设计方

C++对C语言的非面向对象特性扩充(3)

今天要讲的是C++作用域运算符"::",强制类型转换的扩充,C++中相对于C中malloc和free函数的运算符new和delete,以及C++对C的一个重要扩充:引用(reference):这也是C++对C语言的非面向对象特性扩充系列的最后一节. 1.如果有两个同名变量,一个是全局的,一个是局部的,那么局部的变量在其作用域拥有较高的优先权,全局变量则被屏蔽.那如果我希望在局部变量的作用域里使用全局变量怎么办,这时就要用到::作用域运算符了.比如: 1 #include<iost

javascript 的面向对象特性参考

最近在看用javascript+css实现rich client.javascript 也是一个蛮有意思的语言.特别是其面向对象的实现和其他“标准”的OO launguage有很大的不同.但是,都是动态语言,我还是觉得它比起python语法和库都差得太远.可是没有explorer支持python开发 啊...:( 这是我学习javascript中面向对象特性的一点总结.希望对具有其他语言的面向对象设计经验的朋友理解javascript的OO有所帮助.我具有c++,java和python的面向对象

【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态

一.简介 Lua是一门非常强大.非常灵活的脚本语言,自它从发明以来,无数的游戏使用了Lua作为开发语言.但是作为一款脚本语言,Lua也有着自己的不足,那就是它本身并没有提供面向对象的特性,而游戏开发是一项庞大复杂的工程,如果没有面向对象功能势必会为开发带来一定的不便.不过幸好Lua中有table这样强大的数据结构,利用它再结合元表(metatable),我们便可以很方便地在Lua中模拟出类.继承和多态等面向对象编程具有的特性. 二.前提知识 按照惯例,我们还是先来熟悉一下必要的前提知识,以便方便

Java面向对象特性

1.Java语言面向对象的三大关键特征 1)封装:将对象的数据和操作数据的方法相结合,通过方法将对象的数据与实现细节保护起来,称为封装.在java中,通过类 这种语言机制实现了数据的封装与隐藏.2)继承:当两个类有继承关系时,子类可以重用父类中的代码,如果想修改,就重写,继承关系减少了程序中相类似代码的重复说明. java中只支持类之间的单继承,多重继承要通过接口实现.3.)多态:多态的含义可以表达为"对外一个接口,内部多种实现".java语言支持两种形式的多态,运行时多态和编译时多态