Java基础篇--面向对象2(封装、继承、访问修饰符、super关键字、多态)

面向对象(封装、继承、super关键字、多态)

封装

什么是封装?
通俗地理解为私有的属性,公开的方法。
举例来说明,定义一个人的类,我们给这个类两个属性,一个年龄age,一个姓名name。如果设定为public 属性,谁都可以去修改age和name的值,有个人给自己定义1000000岁也或者 负100岁可以,但是这不符合实际。所以不能让别人太轻易地去随意修改我的属性,所以将属性定义为私有private,通过符合实际的方法去修改。

在java中,封装的主体是类,封装对类提供保护,使类的属性和方法在外部不能随意访问,只能通过类对外提供的接口访问。提高程序安全性,隐藏实现细节。

public class Node{	//通过类形式定义链表
	private int data;	//将data定义为私有的
	private Node next = null;
	Node(int data){
		this.data = data;
	}
	int getData(){
		return this.data;
	}
	void setData(int data){
		this.data = data;
	}
}

new一个对象,因为data,next被类所私有化,所以“对象名.data”和“对象名.next”都不能访问到类的成员变量,只能通过类向外提供的public方法,才能获得和修改data的值。

继承

当多个类存在相同属性和行为时,你还在为一个一个重复地写相同属性和行为苦恼,继承出现了。他帮助你盛夏写相同属性和行为的步骤。将相同的属性和方法写到一个类中,其他类去继承他, 可以获得这个类的所有除私有的属性和方法。这个被继承的类叫父类或者超类,被继承的叫子类。
继承使用extends关键字。java支持单继承,不支持多继承。

public class Animal{
	public void eat(){  	//动物都会吃	
	};
	public void sleep(){  //动物都会睡觉
	}
}
public class Person extends Animal{  //继承动物的属性,会吃会睡觉
	String name; //人有名字
	int age;// 有年龄
}
public class Worker extends Person{ // 继承人的属性,有名字有年龄
	String company; // 工作人员有公司
	public void work(){ //会工作。
	}
}

访问修饰符
访问修饰符是用来控制其他类对该类的类、实例变量、构造方法、实例方法的访问权限。Java的访问权限有4种:public 公开的
protected 受保护的。
默认的,没有任何关键字来表示
private 私有的

修饰符 当前类同包的类同包的子类异包异包的子类
public
protected××
默认的××
private××××

super 关键字

super 和 this 关键字类似,都代表对象,但所表示的对象是不同的。this代表本类对象的引用,super代表父类对象的引用。super仅仅是能引用父类的属性,创建子类对象时不会创建父类对象。

多态

理解这三点:

  1. 父类引用指向子类对象
  2. 子类中重写父类方法
  3. 父类引用调用子类重写方法

1、父类引用指向子类对象
比如 Father f = new child()
该引用既可以处理父类Father对象,也可以处理子类Child对象,当相同的消息发送给子类或者父类对象时,该对象就会根据自己所属的引用而执行不同的行为

2、子类中重写父类方法
比如父类中有个拿巴掌打孩子屁股的方法p(),子类继承了父类的方法,但是子类更狠,拿皮带打,这时子类中的p()被定义为拿皮带打。当是父类对象时,调用的p()就是拿巴掌打,子类对象时,调用的就是拿皮带打。这就重写父类方法。

3、父类引用调用子类重写方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值