1.Java基础:面向对象

原创 2016年08月31日 14:58:19

1.什么实面向对象

面向对象是基于面向过程,对象是将功能进行了封装。只要找到了具体的类,创建出对象,就可以调用其中的具体功能。面向对象也是用来解决问题的一种思维模式。


2.面向对象4大特征

     1.抽象

1.抽象包括2个方面

数据抽象——就是用代码的形式表示现时世界中一类事物的特性,就是针对对象的属性。 

          过程抽象——就是用代码形式表示现实世界中事物的一系列行为,就是针对对象的行为特征。

          引自:http://blog.sciencenet.cn/home.php?mod=space&uid=469621&do=blog&id=379622

2.抽象类的作用

当在定义一个父类的时候,父类只知道子类的具体功能是什么,可以无法描述清楚子类的功能体时,

这时父类中的这个功能就可以使用抽象方法来描述,当一个类中有了抽象方法,那么这个类就变成了抽象类。   

3.抽象类的特点

          1.抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。

          2.抽象关键字和那些关键字不能共存

          static:因为静态修饰的内容是可以通过类名直接调用,而一个抽象方法被静态了,使用类名调用这个抽象的方法没有意义。

final:final修饰的方法子类是无法复写的,而abstract修饰的方法要求子类必须复写。

private:私有的内容子类无法得到。

          3,抽象类中可以没有抽象方法,用于不能创建这个类。它主要用于设计模式中的适配器模式

为了更好的阐述抽象类,下面将使用一个例子来说明。

/*
* 抽象类:不具体
*	猫和狗
*		猫:
*			行为:吃、抓老鼠
*		狗:
*			行为:吃、看家
*/

//动物类(抽象类)
abstract class Animal {
	abstract void eat();
}
//描述猫(没有继承抽象类eat的方法不能调用)
class Cat {
	//吃
	void eat() {
		System.out.println("吃鱼");
	}
	
	//抓老鼠
	void catchMouse() {
		System.out.println("抓老鼠");
	}
}

//描述狗
class Dog extends Animal {
	void eat() {
		System.out.println("啃骨头");
	}
	void lookHome() {
		System.out.println("看家");
	}
}
public class main {
	public static void main(String[] args) {
		Dog d = new Dog();
		d.eat();
	}
}

2.继承

1.描述

一个类和另外一个类要产生关系,需要使用extends,把共性的内容抽取出来之后形成的一个类,

称为父类(基类、超类),而别的类继承这个父类称为子类,就形成子父类,这就是继承。

为了更好的阐述继承,下面将使用一个例子来说明。

<span style="font-size:14px;">/*
 * 描述手机
 * 功能:打电话、发短信
 */
//描述手机
class Phone {
	void call() {
		System.out.println("打电话");
	}
	void sendMessage() {
		System.out.println("发短信");
	}
}
/*
 * 手机升级
 * 打电话显示号码、大头贴等
 * 还可以发彩信
 * 重新定义类,描述新功能,在继承以前的类中功能
 */
class NewPhone extends Phone {
	void call() {
		//调父类功能
		super.call();
		//本类功能(子类)
		System.out.println("显示号码");
	}
	void sendMessage() {
		//调父类功能
		super.sendMessage();
		System.out.println("发彩信");
	}
}


public class nine {
	public static void main(String[] args) {
		NewPhone p = new NewPhone();
		p.call();
		p.sendMessage();
	}
}</span>

2.继承的好处

1.提高的代码的复用性。
2.让类与类之间产生了关系。为多态提供前提。

3.单继承、多继承、多重继承分析

1.Java只支持单继承,不支持多继承

2.Java支持多重继承。

class A{
}


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


4.继承中构造方法

1、构造方法中的super()调用父类构造方法,必须在子类构造方法中的第一句。

2、如果在子类的构造方法中使用this()调用本类的其他构造方法,这时这个构造方法中的super()

就没有了。但是在这个子类中,最后肯定有一个构造方法中有super()去调用父类的构造方法。

3、当父类中没有空参数的构造方法时,在子类的构造方法中必须手动显示指定调用父类的哪个构造方法。

4、构造方法不存在复写。


3.封装

1.描述

封装是把过程和数据包围起来,对数据的访问只能通过已定义的方法和接口,进行调用。

2.封装表现

1.函数就是一个最基本封装体。

2.类其实也是一个封装体。

3.封装的好处

1.提高了代码的复用性。

2.隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可以理解为就是封装的概念。


4.多态

1.描述

父类的引用或者接口的引用指向了自己的子类对象。

2.多态的前提

1、必须有关系:继承,实现。

2、通常都有重写操作。

为了更好的阐述多态,下面将使用一个例子来说明。

从以下代码可以发现无论是dog,还是cat,eat是他们的共性,那么将eat进行抽取,抽取到父类中。

/*多态
 * 类是描述事物的,基于类就可以创建出对象
 * 多态是指的是一个对象的多种表现形态,但最终还是一个对象
 * 
 * 多态:指的是父类的引用变量指向了自己的子类对象,把这种形式称为多态
 */

//描述动物
abstract class Animal {
	 abstract void eat();
 }

当有了Animal抽象类之后,狗和猫只要继承这个类,实现他们特有的eat方法即可

//描述狗
class Dog extends Animal {
	void eat() {
		System.out.println("啃骨头");
	}
}

//描述猫
class Cat extends Animal {
	void eat() {
		System.out.println("吃鱼");
	}
}

通过上述代码发现,Animal类型既可以接受Dog类型,也可以接受Cat类型,当再让动物去做事时,不用面对具体的动物,

而只要面对Animal即可。因此上述method方法可以修改为

public class eight {
	public static void main(String[] args) {
		Dog d = new Dog();
		method(d);
	}
	
	//接收传过来的值
	public static void method(Animal a) {
		a.eat();
	}
}

 method(Animal a)可以接受Animal的子类型的所有小动物,而method方法不用在关心是具体的哪一个类型。

即就是只建立Animal的引用就可以接收所有的Dog和Cat对象进来,让它们去eat。从而提高了程序的扩展性。

其实上述代码就已经形成了多态。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java 接口(Interface)

1、什么是接口?接口可以理解成一种特殊的类,由常量和公共的抽象方法所组成类是一种具体的实现体系,而接口定义了某一批类所需要遵循的规范,接口不关心这类类的内部数据,也不关系这些类里方法的实现细节,他只规...
  • qq_18505715
  • qq_18505715
  • 2017年05月25日 23:26
  • 342

1.java面向对象

面向对象:封装(encapsulation)、继承(inheritance)、多态(polymorphism)。匿名对象,方法的重写...
  • xyc1211
  • xyc1211
  • 2017年07月17日 10:01
  • 136

设计模式-可复用面向对象软件的基础 [读书笔记]

1.将软件与设计模式比拟为城市与建筑模式,那么在面向对象的解决方案里,我们将对象和接口看成墙壁和门窗,模式的核心在于提供了相关问题的解决方案。   在软件设计中可能会遇到很多类似的问题,在每次遇到类似...
  • AnnaLoad
  • AnnaLoad
  • 2016年04月17日 10:26
  • 1633

设计模式:可复用面向对象软件的基础 笔记

创建型设计模式:创建型模式抽象了实例化过程。它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型  模式将实例化委托给另一个对象。 创建型...
  • PZ0605
  • PZ0605
  • 2014年12月24日 09:59
  • 631

好书整理系列之-设计模式:可复用面向对象软件的基础 3

第3章创建型模式创建型模式抽象了实例化过程。它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。随着系统演化...
  • coolstar
  • coolstar
  • 2001年08月16日 11:03
  • 2389

Java面向对象基础

面向对象编程基础 1、类与对象 java语言是面向对象的 计算机语言的发展由面向机器向面向对象发展的,是越来越符合人的思维习惯的。   符合人类思维习惯程度 低       →       ...
  • q547550831
  • q547550831
  • 2015年11月05日 16:33
  • 20897

《设计模式:可复用面向对象软件的基础》【PDF】下载

《设计模式:可复用面向对象软件的基础》【PDF】下载链接: https://u253469.pipipan.com/fs/253469-230382288    内容介绍 《设计模式:可复用面向对象...
  • zhiyong499
  • zhiyong499
  • 2017年12月07日 12:11
  • 96

Java 面向对象(基础) 知识点总结I

1、   类与对象的区别,类是对象的模板,对象是类的实例 2、   创建类的语法:class 类名称{},类中由属性及方法组成 3、   对象的创建语法:          · 声明对象:类名称 对象...
  • aikongmeng
  • aikongmeng
  • 2013年05月28日 13:30
  • 2749

面向对象(OO)基础和原则

面向对象基础: OO基础 理解 实现方式 封装 把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。   ...
  • Csdn0123
  • Csdn0123
  • 2012年03月28日 21:22
  • 990

设计模式(可复用面向对象的软件基础)读后感

依据本书设计模式可分为3种类型 1》. 创建型模式(工厂、单件、生成器等) 2》. 结构型模式 (适配器、桥接、代理等) 3》。 行为模式 (跟算法关联较大)每种设计模式都有对应的...
  • u010265663
  • u010265663
  • 2016年12月24日 11:41
  • 384
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1.Java基础:面向对象
举报原因:
原因补充:

(最多只允许输入30个字)