当前位置: 首页 > news >正文

衡阳做网站的公司/推广软文发布平台

衡阳做网站的公司,推广软文发布平台,wordpress版本降级,网页升级中每天自动更新什么意思文章目录前言一、面向对象的基本概念1、对象2、类二、面向对象的三大特征1、封装(1)概述(2)原则(3)总结2、继承(1)概述(2)继承的好处和弊端(3&…

文章目录

  • 前言
  • 一、面向对象的基本概念
    • 1、对象
    • 2、类
  • 二、面向对象的三大特征
    • 1、封装
      • (1)概述
      • (2)原则
      • (3)总结
    • 2、继承
      • (1)概述
      • (2)继承的好处和弊端
      • (3)继承中各元素的访问特点
      • (4)super关键字
      • (5)重写
    • 3、多态
      • (1)概述
      • (2)多态中成员访问特点
      • (3)多态的好处和弊端
      • (4)多态中的转型


前言

面向对象简称 OO(Object Oriented),20 世纪 80 年代以后,有了面向对象分析(OOA)、 面向对象设计(OOD)、面向对象程序设计(OOP)等新的系统开发方式模型的研究。

对 Java 语言来说,一切皆是对象。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继承过来的。对象之间通过相互作用传递信息,实现程序开发。


一、面向对象的基本概念


1、对象

Java 是面向对象的编程语言,对象就是面向对象程序设计的核心。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。对象有以下特点:

对象具有属性和行为。
对象具有变化的状态。
对象具有唯一性。
对象都是某个类别的实例。
一切皆为对象,真实世界中的所有事物都可以视为对象。

例如,在真实世界的学校里,会有学生和老师等实体,学生有学号、姓名、所在班级等属性(数据),学生还有学习、提问、吃饭和走路等操作学生只是抽象的描述,这个抽象的描述称为“类”。在学校里活动的是学生个体,即张同学、李同学等,这些具体的个体称为“对象”,“对象”也称为“实例”。



2、类

在面向对象中,类和对象是最基本、最重要的组成单元。类实际上是表示一个客观世界某类群体的一些基本特征抽象。对象就是表示一个个具体的东西。所以说类是对象的抽象,对象是类的具体。

举例说明一下:

人类所具有的一些特征,这些特征包括属性(一些参数、数值)以及方法(一些行为,他能干什么)。每个人都有身高、体重、年龄、血型等属性,人会劳动、会直立行走、会用自己的头脑去创造工具等方法。人之所以能区别于其他类型的动物,是因为每个人都具有“人”这个群体的属性与方法。

“人类”只是一个抽象的概念,它仅仅是一个概念,是不存在的实体!但是所有具备“人类”这个群体的属性与方法的对象都叫人!这个对象“人”
是实际存在的实体!每个人都是“人”这个群体的一个对象。

老虎为什么不是人?因为它不具备“人”这个群体的属性与方法,老虎不会直立行走,不会使用工具等,所以说老虎不是人!也就是说,类是概念模型,定义对象的所有特性和所需的操作,对象是真实的模型,是一个具体的实体。


类和对象的实例


得出的结论是:
(1)类是描述了一组有相同特性(属性)和相同行为(方法)的一组对象的集合。
(2)对象执行的操作称为类的方法。



二、面向对象的三大特征

1、封装

(1)概述

封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。

封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。

封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。

(2)原则

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

private的成员变量,提供对应的getXxx()/setXxx()方法


代码如下(示例):

非私有变量访问

首先建立一个Person类,里面有非私有的成员变量name和age。

public class Person {String name;int age;
}


再建立一个测试类,创建一个Person类的对象,直接访问Person类中的成员变量,打印信息,此时我们可以看到,非私有的成员变量是可以直接创建对象然后进行访问的。

public class Demo {public static void main(String[] args) {Person p=new Person();p.name="王大";p.age=15;System.out.println(p.name+"今年"+p.age+"岁了");}
}//王大今年15岁了



私有变量访问
首先创建一个Cat类,里面有两个私有成员变量color和type
public class Cat {private String color;private String type;
}


再创建一个测试类,创建一个Cat类的对象,再直接调用成员变量,此时我们发现代码报错,移动鼠标到红色处,会出现 ‘color’ has private access in ‘封装.Cat’

在这里插入图片描述



可以由上图看到直接访问私有成员变量是不行的,所以我们用上面提到的
“private的成员变量,提供对应的getXxx()/setXxx()方法”,给Cat类里的私有成员变量提供get和set方法,快捷键是Alt+Insert—>Generate—>Getter and Setter,生成后的效果如下:

    public String getColor() {return color;}public void setColor(String color) {this.color = color;}public String getType() {return type;}public void setType(String type) {this.type = type;}

对上图的解释:

setXXX方法是用于接收外界传入的值,this是一个关键字,代表所在类的对象引用(方法被哪个对象调用,this就代表哪个对象),故this.color指代Car类的成员变量color,等号右边的color指方法setColor传入的形参color。

getXXX方法是用于外界访问的,return返回的是成员变量的值。



这时再回到测试类中,先用setColor和setType设置变量的值,再用getColor和getType获取变量的值,并打印。

public class Demo {public static void main(String[] args) {Cat c=new Cat();c.setColor("blue");c.setType("英短");System.out.println(c.getColor());System.out.println(c.getType());}
}//blue 英短


(3)总结

封装的好处就是通过方法来控制成员变量的操作,提高了代码的安全性;把代码用方法进行封装,提高了代码的复用性


2、继承

(1)概述

继承是面向对象三大特征之一。可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及追加属性和方法,通过extends关键字实现继承。

注意:不能盲目使用继承关系,使用继承,需要考虑类与类之间是否存在is…a的关系,不能盲目使用继承。is…a的关系:谁是谁的一种,例如:猫和动物,苹果和水果

注意:继承只能单继承或者多层继承
错误范例:

class A extends B, C { }

正确范例:

    class A {}   class B extends A{ }   class C extends B{ }


(2)继承的好处和弊端

好处:
提高了代码的复用性(多个类相同的成员可以放到同一个类中)
提高了代码的维护性(如果方法的代码需要修改,修改一处即可)

弊端:
继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时子类实现也不得不跟着变化,削弱了子类的独立性


(3)继承中各元素的访问特点

继承中变量的访问特点:

在子类方法中访问一个变量,采用的是就近原则。 子类局部范围找—>子类成员范围找—>父类成员范围找
如果都没有就报错(不考虑父亲的父亲…)


继承中构造方法的访问特点:

子类中所有的构造方法默认都会访问父类中无参的构造方法
1.子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化
2.每一个子类构造方法的第一条语句默认都是:super()

如果父类中没有无参构造方法,只有带参构造方法,该怎么办呢?
1.通过使用super关键字去显示的调用父类的带参构造方法
2.在父类中自己提供一个无参构造方法
推荐:自己给出无参构造方法


继承中成员方法的访问特点:

通过子类对象访问一个方法, 子类成员范围找—>父类成员范围找l 如果都没有就报错(不考虑父亲的父亲…)


(4)super关键字

super概念:代表父类存储空间的标识(可以理解为父类对象引用)
this关键字:代表本类对象的引用


this和super的使用区别:

成员变量:
this.成员变量 - 访问本类成员变量
super.成员变量 - 访问父类成员变量
成员方法:
this.成员方法 - 访问本类成员方法
super.成员方法 - 访问父类成员方法
构造方法:
this(…) - 访问本类构造方法
super(…) - 访问父类构造方法


(5)重写

概念:子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样)


应用场景:当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。


方法重写的注意事项:

  1. 私有方法不能被重写(父类私有成员子类是不能继承的)
  2. 子类方法访问权限不能更低(public > 默认 > 私有)



3、多态

(1)概述

1.什么是多态

同一个对象,在不同时刻表现出来的不同形态

2.多态的前提条件有哪些

要有继承/实现关系
要有方法重写
要有父类引用指向子类对象


(2)多态中成员访问特点

多态中成员变量的访问特点是什么

     编译看左边、运行看左边


多态中成员方法的访问特点是什么

    编译看左边、运行看右边


代码如下(示例):

    public class Animal {String name;public void eat(){System.out.println("动物吃东西");}}public class Cat extends Animal{String color;@Overridepublic void eat() {System.out.println("猫吃鱼");}}public class Demo {public static void main(String[] args) {Animal a=new Cat();a.name="加菲";  a.color="blue";  //color报错a.eat();   //输出"猫吃鱼"}}

先创建一个Animal类,里面有成员变量name和成员方法eat;又创建一个Cat类,里面又成员变量color和重写的父类的方法eat;此时在测试类Demo中,创建一个Cat对象赋给Animal的引用a,这就是多态的基本写法。

根据成员变量的访问特点"编译看左边、运行看左边",得知引用a只能调用等式左边的父类中的成员变量name,而无法访问等式右边的子类中的成员变量color;

根据成员方法的访问特点"编译看左边、运行看右边",得出引用a可以调用子类中重写的父类的方法eat。若父类无该方法,则会报错;若子类无该方法,则是调用父类中的eat方法。


(3)多态的好处和弊端

好处:
提高了代码的扩展性。
定义方法时,如果将父类型作为参数,在使用方法时,可以传递任意子类对象

弊端:
不能使用子类特有的成员


(4)多态中的转型

向上转型
       父类引用指向子类对象其实就是向上转型。


向下转型
       将父类型的引用转换成具体的子类对象。



代码如下:(其中Dog是Animal的子类)

    Animal a = new Dog(); //向上转型Dog d=(Dog) a;   //向下转型



学无止境
http://www.jmfq.cn/news/5090383.html

相关文章:

  • 南京建设网页速成班/佛山百度快速排名优化
  • 郑州网站排名外包/文军seo
  • 网站qq代码/西安网站设计
  • 铜川哪些公司需要网页电商设计师/农大南路网络营销推广优化
  • 越南做It网站推广/站长查询域名
  • 网站页面设计流程/中国疾控卫生应急服装
  • 怎么做网站的在线客服/重庆seo排名
  • 企业网站推广方案范例/合肥网站设计
  • aspx网站做app/网络推广app是违法的吗
  • 贵州省住房和城乡建设厅网站首页/软件注册推广平台
  • php 网站目录结构/宣传软文
  • 网站建设需要的技术设备/辽宁和生活app下载安装
  • 小程序快速建站/技术培训班
  • dw做网站需要数据库么/网站制作建设公司
  • 销售网站制作电话/微信推广费用一般多少
  • 高端网站设计公司如何设计网站/加强服务保障 满足群众急需需求
  • 网站源码出售/网站关键词优化建议
  • 做网站首页的图片怎么缩小/深圳市网络seo推广平台
  • 北京手机网站建设外包/百度一下知道官网
  • html5 公司网站/品牌网站设计
  • 建设工程鲁班奖公示网站/app推广文案
  • 设计网站中如何设置特效/网推软件有哪些
  • 高端网站开发教程/谷歌收录查询工具
  • 北京网站制作费用/湖南seo网站开发
  • wordpress标题间隔符修改/seo课程在哪培训好
  • 青岛的网站建设/互联网营销是什么
  • 成都个人网站建设/近两年网络营销成功案例
  • 公安网站的建设目的/南昌seo代理商
  • 专门做加盟的网站/市场营销推广策划方案
  • 代理服务器地址大全/seo站长网怎么下载