个人学习总结一面向对象2

面向对象2

   1.封装:
封装的意思就是隐藏对象的属性细节,仅提供给调用者调用的方法即可
封装的优点是可以提高代码的安全性和使用性
private关键字,权限修饰符;用于修饰类中的成员(成员变量,成员函
数),使其私有化,仅能在本类中调用
比如类中有个name属性,我不想让对象访问到,这时候就可以用private
修饰name这个属性

  2.继承

     1、提高了代码的复用性
     2、让类与类之间产生了关系,给第三个特征多态提供了基础
java中支持单继承,这有别于c++可以多继承,但是对于多继承机制体现在了接口上。
不支持多继承原因:当多个父类中有功能相同,具有不确定性,不安全。java中支持多层(多重)继承
C 继承 B 继承 A,这就是继承体系。当要使用一个继承体系是,先查看该体系中的顶层类,了解该体系的基本功能,创建体系中的最子类对象,完成功能的使用。

在子父类中,成员特点的体现
1、成员变量
当本类的成员和局部变量同名用this区分;当子父类中的成员变量同名,用super区分。
---------------------------------
this代表一个本类对象的引用;super代表一个父类的空间

代码示例:

public class Fu
{
	int num = 5;
	Fu()
	{
		System.out.println("fu......");
	}
}
public class Zi extends Fu
{
	int num = 2;
	Zi()
	{
		System.out.println("zi......");
	}
	public void show()
	{
		System.out.println(this.num+"-----"+super.num);
	}
}
public class TestFuZi
{
	public static void main(String[] args)
	{
		Zi zi = new Zi();
		zi.show();
	}
}
运行结果:    fu......
zi......
2-----5

从上面的示例中来理解子类父类构造函数的特点
在子类的构造对象时,发现在访问子类构造函数式,父类也运行了
原因:在子类的构造函数的第一行有一个默认的隐式语句—super(),此处调用的就是父类中国的空参的构造函数。
子类的实例化过程:
子类继承父类,获取到了父类中的内容(属性),所以在使用子类的构造函数之前,会先访问父类的构造函数,了解父类是如何定义自己的内容,进行初始化的,为了完成这个任务,就会在子类的构造函数中加入super()语句。
从上面的代码中可以看出,子类的构造函数被调用的过程中,父类中的num也被初始化了,该变量也存在于子类对象的对内存空间,子类自己本身也继承了该变量,此时对内存的Zi对象中就有两个num的值,一个是Zi类的,一个是Fu的num。

super的注意点:如果父类中没有定义空参数的构造函数,那么子类的构造函数必须使用super明确要调用父类中哪个构造函数,同时子类构造函数中如果使用


this调用了本类构造函数,那么就没有super语句了,因为,super和this都只能


定义在第一行,所以只能有一个,但是可以保证的而是,子类中肯定会有其他的


构造函数访问父类的构造函数。并且,super初始化父类内容时,子类的成员变


量没有显示初始化,当super()父类初始化完毕后,才进行子类的成员变量初始


化。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值