Java 面向对象三大特征总结

1.封装

1.提高程序的安全性,保护数据

2.隐藏代码的实现细节,对外提供访问方式

3.统一接口

4.系统可维护增强了

2. 继承

继承的本质是对某一批类的抽象

提高了代码的复用性

让类与类之间产生了关系,给多态提供了前提

什么时候写继承
事物之间存在着所属关系时,才继承。xxx是yyy中的一种。

super注意点

1.super调用父类的构造方法,必须在构造方法的第一个

2.super必须只能出现在子类的方法或构造方法中!

3.super和this不能同时调用构造方法!

this:本身调用这个对象(没有继承也可以使用)

super:代表父类对象的应用(只能在继承条件下可以使用)

继承的覆盖使用注意事项:

1,子类覆盖父类权限必须大于等于父类的权限

。public>protected>default>private

2,覆盖中,静态只能覆盖静态,或者被静态覆盖。

重写:需要有继承关系,子类重写父类的方法。子类必须与父

类一致,子类重写了父类的方法,执行子类的方法

为什么需要重写

父类的功能,子类不一定需要,或者不一定满足

创建子类对象,父类中的构造函数也运行了。
为什么呢?

其实在子类的所有构造函数中的第一行,都有一句默认的super();在调用父类中的空

参数构造函数。

为什么子类实例化都必须去父类中的初始化呢?

因为子类继承了父类,只有了父类中的内容,所以子类在实例化使用父类中的内容之前,
必须要先明确父类是如何对自己的内容进行初始化的,
所以子类的构造函数都会默认访问父类中空参数的构造函数。通过super();

class Fu extends Object
{
	Fu()
	{
		//super();
		//显示初始化。
		//构造代码块初始化。
		System.out.println("fu run...");
	}
	/**/
	Fu(int x)
	{
		System.out.println("fu ..."+x);
	}
}
class Zi extends Fu
{
	Zi()
	{
//		super();
		
		System.out.println("Zi run...");
	}
	Zi(int x)
	{
		this();
		System.out.println("Zi ..."+x);
	}
}

class ExtendsDemo4 
{
	public static void main(String[] args) 
	{
		new Zi(4);
	}
}

3.多态

某一事物的多种体现形态。
重点是对象的多态性。

多态在程序中的体现:父类或者接口的引用指向了自己的子类对象。

**多态的好处:**提高了代码的扩展性,后期出现的功能,可以被之前的程序所执行。

多态的弊端:虽然可以使用后期出现的代码,但是不能使用子类特有的功能。只能使用覆盖了父类的功能。

多态的前提:必须要有关系(继承,实现),通常会有覆盖操作。

Animal a = new Dog();//向上转型。什么时候用?需要提高程序的扩展性,隐藏具体子类型时。

Cat c = (Cat)a;//向下转型。什么时候用?当需要使用子类型的特有方法时。

Animal a = new Dog();//向上转型。什么时候用?需要提高程序的扩展性,隐藏具体子类型时。

Cat c = (Cat)a;//向下转型。什么时候用?当需要使用子类型的特有方法时。

不能重写的方法

1.static方法属于类,不属于实例

2.final 修饰 常量

3.private 修饰的方法

多态的调用方式在子父类中的特殊体现。

1,成员变量。

​ 多态调用的时,编译和运行都参考引用型变量所属的类中的成员变量。
​ 简单的说就是:编译和运行看等号的左边。

2,成员函数。

​ 多态调用时,编译参考的是引用型变量所属的类,运行时参考的是对象所属类。
​ 简单的说就是:编译看左边,运行看右边。因为函数有一个覆盖的特性。

3,静态函数

​ 多态调用时,编译和运行都参考引用型变量所属的类中的静态函数。
​ 简单的说就是:编译和运行看等号的左边。

class Fu
{
//	int num = 4;
	void show()
	{
		System.out.println("fu run");
	}

	static void staticMethod()
	{
		System.out.println("fu static method");
	}
}
class Zi extends Fu
{
//	int num = 5;
	void show()
	{
		System.out.println("Zi run");
	}

	static void staticMethod()
	{
		System.out.println("Zi static method");
	}
}
class DuoTaiDemo4 
{
	public static void main(String[] args) 
	{
		/*
		静态函数,静态绑定到所属类上。
		*/
		Fu f = new Zi();
		f.staticMethod();
		Zi z = (Zi)f;
		z.staticMethod();
		/*
		//成员函数。动态绑定到当前对象上
		Fu f = new Zi();
		f.show();
		*/
		/*
		//成员变量
		Fu f = new Zi();
		Zi z = (Zi)f;
		System.out.println(f.num);//4
		System.out.println(z.num);//5
		*/
	}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值