重修Java——面向对象

面向对象

面向对象的程序设计:
1、所有的东西都是对象。将对象看成一种新型的变量;它保存数据,但可以对自身操作。
2、程序就是一大堆的对象的组合;通过消息的传递,各对象知道自己该干什么。而消息传递可以想象成一个调用请求,它调用的是从属于目标对象的一个子例程或方法。
3、每个对象都有自己的存储空间,可以容纳其他对象。所以尽管对象的概念非常简单,但是程序中可以达到任意复杂程度。
4、每个对象都有一个类型。语法上规定,每个对象都是某个“类”的实例。“Class”类就是类型“Type”类型的同义词。一个类最重要的特征就是“能将什么消息发给他”。
5、同一类的所有的对象都能接受相同的消息。
什么是面向对象,通俗来说就是看待事物的角度,将万事万物都看成对象。它具有以下几个特点:抽象、封装、继承、多态。
首先来说一下抽象,如果要我举个例子来说大概是这样,比如一群学生,我们来抽取以下它们共同的特质,比如一个学生起码要有自己的学号是吧,有自己的学校,自己的专业,他还要有自己的姓名、性别、身份证号等。学生能干哪些事?首先可以自报家门,告诉别人自己的信息。还可以上课,可以读书,可以运动...那么将他们的信息或者属性标注一个类型,每种行为都写入一个方法中。这个就对事物抽象的过程。

封装:首先强调封装是出于安全的考虑,尽可能的隐藏数据内部的具体细节,所以推荐写代码的时候一定要注意这点。具体的做法就是”类“将自己的属性私有化。然后提供共有的get(获取)和set(改变)方法。

继承:就我个人而言它非常好的体现了代码重用的理念。当然想要设计能够重复使用的代码是比较考察经验和洞察力的。它是指 在已有的类的基础上,除了实现原有的大致的功能还能有自己的属性或者方法。那么首先它必须要有一个原始类,称为基类或者父类。并以此为基础增加功能。使用extends关键来实现继承。

多态:这是我之前没有理解好的一个概念。
概念:是指不同类的对象对同一消息做出响应。也就是对同一个消息可以根据不同的对象做出不一样的行为方式。
实现:动态绑定。执行期间根据对象的实际类型调用相应的方法。
作用:降低耦合度。同过父类的引用,在运行期指明子类的对象动态的绑定,来做出响应。
多态的必要条件:
1、要有继承
2、重写父类的方法,子类有不同的行为方式。
3、父类的引用指向子类的对象。
多态的好处:可替换,扩充,可以新增子类而不必修改原有的类,接口化,所有子类实现同一个接口。然后就是非常的灵活。

例子:
/**
 * Person类 是所有的学生和老师的基类
 * @author lenovo
 *
 */
public class Person {
	private String name;//
	public void showSelf(){
		System.out.println("我是Person!");
	}
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}
/**
 * 学生类,有自己的属性id,方法showSelf()
 * 首先Class代表了抽象,属性私有,提供get和set方法体现了封装,extends体现继承
 * @author lenovo
 *
 */
public class Student extends Person {
	private String  id;//学号
	@Override
	public void showSelf(){
		System.out.println("我是学生!学号:"+id);
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	
}	
/**
 * 老师类,自己独有的属性job,同时也有一个showSelf()
 * @author lenovo
 *
 */
public class Teacher extends Person {
	private String Job;//工作
	public void showSelf(){
		System.out.println("我是老师!");
	}
	public String getJob() {
		return Job;
	}
	public void setJob(String job) {
		Job = job;
	}
	
}
/**
 * 测试类,为了体现类的特点
 * @author lenovo
 *
 */
public class Test {
    public static void main(String[] args) {
        Person person = new Person();//创建了一个person对象
        Person person2 ;//声明这么一个变量,只是一个句柄或引用
        person2 = new Student();//将子类Student的对象指向这个引用。
        Person person3 = new Teacher();
        //调用各自的showSelf方法。
        person.showSelf();
        person2.showSelf();
        person3.showSelf();
    }
}

我是Person!
我是学生!学号:null
我是老师!
结果:体现了多态





















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值