`
XY1991
  • 浏览: 36814 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论

OOP学习小结

OOP 
阅读更多

 

在蓝杰学了java这么久了,今天是第一次写总结,从OOP(面向对象的部分)开始:


OOP主要有两部分:
类和对象
类的继承
一.类和对象
1.类 
类是一种用户自定义的类型,类似于基本数据类型。
类是一组具有相同特征和相同行为的对象的抽象。对象的特征定义为类的属性,对象的行为定义为类的方法(函数)。
类可以创建对象,也可以说类是对象的模板,只有创建了对象才能调用类里面的方法。
类是程序的基本组成单位。
类可以创建对象的对象。

2.对象
万事万物皆对象。
对象,我们眼睛里看到的和脑子里想到的物体都可以称之为对象。
对象有两部分组成:
特征和行为。
例如:
学生是一个对象
特征:姓名  年龄  学号等
行为:学习  玩       走路   吃饭等

3.类的格式
public class 类名{
           private 数据类型  属性名; //属性是是属于当前对象的只能由当前对象调用,所以使用private私有的访问修饰符。

           public 类名([参数列表]){ //构造函数
           //方法体
           }

          public 返回值类型  方法名([参数列表]){ //方法:方法一般要和其他的对象进行交互,定义为public公有的访问修饰符
         //方法体
          }


}

类的访问控制:
private:私有的,只有当前类能访问,其他类不能访问,子类也不能访问;
protected:受保护的,当前包里的类和子类都可以访问;
public:共有的,所有的类都可以访问。
如果没有显示定义,系统有一个默认的(缺省),但不同情况下默认的不同,

例如普通类中默认的是protected,接口中默认的是public。

4.方法的分类
(1).根据返回值划分 
         有返回值的方法和无返回值的方法
(2).根据参数划分
         有参数的方法和无参数的方法

         在编写程序时,这两种方法分类是结合在一起使用的,不会有独立的情况出现。


5.方法的重载
方法重载的条件:
在同一个类中,方法名相同,但是方法的参数个数和参数类型不同。
方法重载后的调用:
根据参数的个数和类型来决定调用相应的方法。
为什么要进行方法的重载:
由于对象的差异,导致相同的方法需要有不同的实现。

6.方法参数传递
分为两种:
基本数据类型的传递
对象的传递

7.构造函数
构造函数是用来实例化(创建)对象的。
每个程序都有一个默认的构造函数,
默认的格式为:不带形参,方法体为空    public 类名() {}
用户也可以自己定义构造函数,格式
public 类名([参数类型 参数名,,]) {
//函数体
}

如果自定义了构造函数,会屏蔽系统默认的构造函数,此时再调用就调用用户自定义的构造函数。
构造函数与普通方法的区别:
(1).构造函数不能有返回值 ,而普通函数有返回值
(2).构造函数的方法名必须与类名相同,而普通函数可以用户自己命名。
(3).系统会默认提供一个构造函数,普通方法必须自己写
(4).构造函数是用来实例化(创建)对象的,普通方法是对象调用来实现某一个功能的
(5).构造函数只有在创建对象时调用一次,而普通函数可以多次调用
(6).构造器可以调用构造函数也可以调用方法,而普通方法不能调用构造函数

利用构造函数创建对象的格式:
类名 对象名 = new 构造函数名([参数列表]);
对象调用构造函数的格式:
对象名.方法名([参数列表]);

在继承时子类并不继承父类的构造函数。
8.this关键字
(1).this关键字用来区分属性和参数,如:
public void setName(String name) {
this.name = name; //加上this的为属性,不加this的为参数
}
(2).this关键字用来指代当前对象,如:
Student stu1 = new Student();
Student stu2 = new Student();
stu1.setName(); //this指代stu1
stu2.setName(); //this指代stu2
(3).this关键字其实就是现实中的“我”

9.值传递与引用传递
值传递:适用于 java中的基本数据类型(包含String类型)
值传递是将变量A的值,拷贝一份存储到变量B中,两个不同的变量分别存储相同的值,
修改B的值不会影响到A的值。
赋值运算是安置传递。

引用传递:适用于 java中的类类型(不包含String类型)
引用传递是将对象A中的地址,拷贝一份存到对象名B中,这样两个对象名中存储的是同一地址,
调用方法或属性时访问的是同一对象。
引用传递交互是双方的,A的值会随着B值的改变而改变

二.类的继承

 

继承


1.为什么需要继承
增加程序的可重用性
增加程序的扩展性

2.继承的格式
继承是通过extends关键字实现的
格式是:
public class 子类名 extends 父类名{

}

3.子类继承到了父类的什么
java中的继承是单继承,只有一个父类
(1).子类父类在同一个包下:子类可以继承父类公有的和受保护的以及默认的属性和方法
(2).子类父类不在同一个包下:子类值可以继承父类公有的属性和方法
子类不能继承父类私有的属性、方法、构造函数
子类可以调用从父类中继承的属性和方法,
在调用方法时,如果子类没有该方法,则调用父类中继承来的方法

4.方法的重写
方法重写的条件:
(1).必须存在继承关系,子类中定义的方法必须在父类中存在,
(2).方法名、参数、返回值类型必须与父类的一样
(3).子类中定义的访问修饰符可以比父类访问修饰符,但绝对不能小
public -  protected - 默认的  - private
子类中可以重载父类的方法。

5.自动转型
要实现自动转型需要满足的条件:
必须存在继承关系(只有存在继承关系的才能自动转型,因为父类包含子类)
格式:
父类名 对象名 = new 子类构造函数([参数列表]);
对象名是父类类型的,但对象是通过子类的构造函数创建的,对象是子类的
对象会优先调用子类的方法,如果子类没有该方法,则调用父类中继承来的方法

6.多态
多态是一种表现的形式。
因为程序的死的,由于继承、方法重载、方法重写、自动转型导致程序在编译时不能确定调用哪个方法,
到运行时才能确定

接口

 
1.为什么需要接口
接口是用来定义规则、定义方法的
便于程序的修改、扩展
接口会强制子类去实现接口中的的所有方法
2.定义接口的格式
接口只有公有的属性的方法,但是方法没有具体的实现,所以在使用时很少定义属性,
一般定义常量。
接口的关键字是:interface
public interface 接口名 {
           //定义常量的格式: 
           public static final 数据类型  常量名(一般常量名全部大写)= 值;
           //定义方法的格式:
           public 返回值类型  方法名([参数列表]);
          //默认的是public
          返回值类型  方法名([参数列表]);
}
static表示静态的,不需要创建对象就可以直接使用
final表示不可改变,不能改变常量中的值,如果发生改变,则出错。

3.实现接口的格式
实现接口的关键字是:implements
public class 类名 implements 接口名{
//必须重写接口中的所有方法
}

接口也可以继承接口:
public interface 子接口名 implements 父接口名{

}

4.接口和类的区别
  接口定义的关键字是interface,类定义的关键字是class
  实现接口的关键字是implements,继承类的关键字是extends
  类可以实现多该接口,类只能继承一个类(java中的类是单继承的)
  接口中所有的方法都没有具体实现,类中所有的方法必须有实现
  接口中没有构造函数,类有构造函数
  接口不能创建对象,类可以创建对象

3.抽象类
抽象类介于接口和类之间,可以有实现,也可以没有实现。
定义抽象类的关键字是abstract class
格式:
public abstract class 类名 extends 父类 implements 父接口名,,{
           定义抽象的方法 
           public abstract 返回值类型 方法名([参数列表]);
}
抽象类不能创建对象(抽象类中存在抽象的方法)
集成抽象类的关键字是extends
抽象类不必实现接口中的所有方法

抽象类的实现
抽象类的实现格式:public class  子类名  extends 抽象父类名{


接口是一种特殊的类

 

2
0
分享到:
评论

相关推荐

    Javaoop学习总结

    除了上述概念,Java中的线程也是OOP学习的重要部分。线程是程序执行的最小单位,允许多个任务同时运行,提高程序效率。Java提供了`Thread`类和`Runnable`接口来实现线程。通过创建`Thread`对象并传入实现`Runnable`...

    oop课程总结V1.0

    以下是对OOP课程V1.0的详细总结: 首先,.NET框架是微软开发的一个平台,它包括公共语言运行时(CLR)和框架类库(FCL)。CLR执行CLS(公共语言规范)和CTS(通用类型系统),确保不同语言间的兼容性和数据类型的...

    java oop总结-编程程序

    ### Java OOP 总结与理解 #### 一、面向对象基本概念 在 Java 面向对象(Object-Oriented Programming, OOP)编程中,我们主要关注以下几个核心概念:类(Class)、对象(Object)、封装(Encapsulation)、继承...

    宠物管理系统及Java OOP总结PPT

    宠物管理系统及Java面向对象编程(OOP)是一个典型的IT领域课题,它涵盖了软件开发中的核心概念和技术。...通过学习和实践这样的项目,开发者可以更好地理解和运用OOP原理,提升软件开发的专业水平。

    PHP OOP入门必读

    总结来说,这份资料集合涵盖了PHP5中OOP的核心内容,从基础的类和对象到高级的接口、继承和多态,再到异常处理机制,为初学者提供了一个全面的学习路径。通过深入理解和实践这些知识点,你将能够更好地利用PHP进行...

    java基础总结练习,熟悉OOP开发

    ### Java基础总结练习,熟悉OOP开发知识点 #### Java OOP概述 Java是一种面向对象编程语言(Object-Oriented Programming,OOP),其核心概念包括类(Class)、对象(Object)、继承(Inheritance)、封装...

    清华大学oop第一讲

    项目设计与实现将考验学生运用OOP原则的能力,而期末报告则要求学生总结学习成果、分享编程技巧,并提出对课程的建议。此外,课堂参与和助教辅导也有助于获取额外加分。 总的来说,这门课程不仅教授OOP的基本概念,...

    php5 oop编程书

    理解这些基础是学习OOP的第一步。 接下来,书中详细讲解了PHP5中的继承、封装和多态等核心OOP特性。继承允许一个类(子类)从另一个类(父类)继承属性和方法,从而实现代码复用。封装是将数据和操作数据的方法绑定...

    windows第六章深入学习c#oop(下)

    windows第六章深入学习c#oop,介绍了面向对象的基础知识,希望对于初学者能有所帮助。

    C# 象棋 (oop)

    总结,通过C#和OOP,我们可以构建一个功能完善的象棋游戏,不仅展示了C#语言的强大,也揭示了OOP在解决复杂问题时的优雅。在实践中,不断优化和迭代这个游戏,还可以进一步提升编程技能,学习到更多关于游戏设计、...

    浅谈OOP之uml设计模式

    通过学习和实践这些模式,开发者可以更好地理解和重构复杂系统,同时提高代码的可读性和可维护性。UML作为可视化工具,可以帮助团队成员更好地沟通和理解系统设计,从而促进协同开发。因此,无论是初学者还是经验...

    ACCP8.0C#oop总结

    ### ACCP8.0 C# OOP 总结 #### 一、深入.NET框架 - **公共语言运行时(CLR)**:CLR是.NET Framework的核心组件之一,它为托管代码...以上是对ACCP8.0 C# OOP相关知识点的总结,希望对学习C#面向对象编程有所帮助。

    oop学习文档

    ### 面向对象编程(OOP)学习文档 #### 一、面向对象编程的基本概念 面向对象编程(Object-Oriented Programming,简称 OOP)是一种软件开发架构,它将计算机程序设计成由独立的单元组成,这些单元被称为“对象”。...

    C#OOP电影院C#OOP电影院

    总结,C#面向对象编程在电影院场景的应用展示了OOP的强大之处。通过类和对象的设计,我们能够构建出一个模块化、可扩展的电影院管理系统。同时,通过对`MyCinema改正终极版`的学习,我们可以看到实际开发中的问题...

    oop与javascript

    ### OOP与JavaScript详解 #### 一、面向对象编程(OOP)基础概念 面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它通过...对于学习面向对象编程的初学者来说,研究jQuery的源码是非常有益的。

    OOP设计的一套比较好的架构

    面向对象编程(Object-Oriented Programming,简称OOP)是一种广泛应用的编程范式,它以对象为核心,通过封装、继承和多态等机制来组织代码,使得程序更易于理解和维护。一套优秀的OOP架构能够提高代码的可读性、可...

    C# OOP_3(三层结构+数据库+简单工厂 实现OOP)

    在本项目"C# OOP_3(三层结构+数据库+简单工厂 实现OOP)"中,我们将探讨如何使用C#编程语言结合面向对象编程(OOP)原则,构建一个包含三层架构的系统,该系统与数据库交互并利用简单工厂模式进行对象创建。...

    OOP学习范例Java版

    **OOP学习范例Java版**是一份专为Java开发者准备的、深入理解面向对象编程(Object-Oriented Programming,简称OOP)的资源。这个压缩包包含了多种设计模式的详细编程实例,旨在帮助开发者提升代码组织和设计能力,...

    拳拳到肉 掷地铿锵的三本OOP绝佳小书

    《拳拳到肉 掷地铿锵的三本OOP绝佳小书》是侯捷...总的来说,侯捷先生推荐的这三本小书不仅仅是学习C++的工具,更是理解面向对象编程哲学的窗口。它们以精炼的语言和深刻的洞察力,引导读者走向编程艺术的更高境界。

Global site tag (gtag.js) - Google Analytics