黑马程序员——面向对象简要概述

--------------------------- android培训     java培训      期 待与您交流! -------------------- 

面向对象的开发过程就是不断地创建对象,适用对象,指挥对象做事情。设计的过程就是不断地管理和维护对象之间的关系。
面向对象就是把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。对象拥有多种特性,如学生有年龄、性别、身高、体重、重量、学号,这些特性被称为对象的属性。对象还有很多功能,如学生可以学习、睡觉、吃饭、看电影等行为,这些行为被称为对象的方法,实际上这些方法是一种函数。
面向对象的特征有封装、继承和多态。
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
代码如下:

public class studentDemo {
	public static void main(String[] args) {
		student s=new student();
		s.setName("lisi");
		System.out.println("姓名:"+s.getName());
	}
}
class student{
	private String name;
	public  void setName(String name){
		this.name=name;
	}
	
	public String getName(){
		return name;
	}
}

继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。
继承就是在现有类的基础上构建新的类,只支持单继承,但支持多层继承。关键字是extends。当一个类继承一个现有类后,可以对被继承类中的属性和方法进行重用。接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。接口关键字是interface。
由于多个类中存在相同属性和行为时,如果将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承单独的那个类即可。这样就实现了减少代码的目的。同时子类可以直接访问父类中的非私有的属性和行为。继承的出现提高了代码的复用性,使类与类之间产生了关系,提供了多态的前提。
继承出现函数覆盖,子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为重写或者复写;当子类需要父类的功能,而功能主体子类有自己特有内容时,可以复写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。覆盖时,子类方法权限一定要大于等于父类方法权限,静态只能覆盖静态。
继承经常会出现抽象类,java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。抽象类和抽象方法必须用abstract关键字来修饰。格式:修饰符abstract 返回值类型函数名(参数列表);抽象类不可以被实例化,也就是不可以用new创建对象。抽象类通过其子类实例化,而子类需要覆盖掉抽象类中所有的抽象方法后才可以创建对象,否则该子类也是抽象类。
代码如下:
abstract class person{
	private String name;
	public void setName(String name){
		this.name=name;
	}
	public void getName(){
		System.out.println(name);
	}
	 public abstract void learn();
	 public abstract void getHoliday();
}
class student extends person
{
	 public void learn(){
		 System.out.println("学生在学习!!!");
	 }
	 public void getHoliday(){
		 System.out.println("学生在度假!!!");
	 }
}
interface  eat{
	void eat();
}
class BaseStudent extends student implements eat
{
	public void eat() {
		System.out.println("基础班学生在吃饭");
	}
}
class AdvStudent extends student implements eat
{
	public void eat() {
		System.out.println("就业班学生在吃饭");
	}
}
public class extendsAndInterfaceDemo {
	public static void main(String[] args) {
		BaseStudent bs=new BaseStudent();
		bs.setName("wangwu");
		bs.getName();
		bs.getHoliday();
		bs.eat();
		new AdvStudent().eat();//创建对象调用本类的方法
		}
}

多态性是指允许不同类的对象对同一消息作出响应。多态的出现虽然大大的提高程序的扩展性,但是只能使用父类的引用访问父类中的成员。多态的前提必须是类与类之间有关系。要么继承,要么实现。也就是说存在覆盖。成员函数在多态调用时,编译看左边,运行看右边。

abstract class person{
	abstract void eat();
}

class student extends person{
	public void eat(){
		System.out.println("吃学生餐");
	}
	
}
class worker extends person{
	public void eat(){
		System.out.println("吃工作餐");
	}
}
public class duoTaiDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		student s=new student(); //创建学生对象
		function(s);             //多态的运用
	}
	public static void function(person a)//person a = new student();
	{
		a.eat();
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值