面向对象——继承

面向对象

1.初识面向对象

在学习Java的过程中,相信我们对面向对象这个知识点十分熟悉。但是当我们被问到面向对象是什么的时候,大多数人可能还停留在它是一种软件开发方法的层面。当我们从生活的角度去看的时候或许会更加明了——找合适的人,做合适的事。这与“亲历亲为,自力更生”的面向过程有着本质的区别。

2.面向对象的三大特征

面向对象有三大特征,分别是封装,继承和多态。其中,封装是对方法的封装,对工具类的封装以及对框架的封装。它是模块化思想的基础。继承便是子类继承父类,通俗来说就是子承父业。多态便是多类合作。今天我着重谈一谈继承的思想。

2.1继承的实现方式

在继承中我们会用到一个关键字:extends。其格式如下:

class A extends B {
	.........
}

其中,A是B的一个子类,B是A的唯一父类。
那么问题来了,是不是子类就一定能会得到父类的所有东西?并不是。子类继承父类之后,可以使用父类的非私有化成员变量和成员方法,父类的私有化内容子类是不能使用的。

class Father {
	//public 修饰的公开成员变量name
	public String name;
	//private修饰的私有化成员变量salary
	private double salary;
	public Father() {
			System.out.println("Father类构造方法");
		}
		public Father(String name, double salary) {
	
			this.name = name;
			this.salary = salary;
		}
		/*
		 * public修饰的公开方法
		 */
		public void game() {
			System.out.println("Hungry Shark!");
		}
		//!!!!!!!
		private void testPrivate() {
			System.out.println("父类私有化方法!");
		}
	}
	class Son extends Father {
		int age;
	
		public Son() {
			System.out.println("Son类的构造方法");
		}
		
		public void work() {
			System.out.println("程序员!!!");
		}
	}

比如说运行上述程序时,父类公开的成员变量和成员方法子类都可以使用。然而,父类中唯一定义的私有化成员方法子类便无法使用。效果如下:
父类中的私有化方法并未实现

2.2为什么会执行父类的无参构造方法

这里涉及到了一个关键字:super;
它用于调用父类成员方法和成员变量,显式的调用父类的构造方法。在上述程序的运行结果中我们也发现了这个问题。虽然上述程序中并未写道super关键字,但是系统会默认一个隐形的super放在该方法体的第一句 。示例如下:

public Father() {
		//super的位置是固定的,移动的话,系统会报错!
		super(实际参数);
		.........
		.........
	}

在这类程序中,如果没有显式调用父类的构造方法,默认Java编译器会调用无参构造方法使用。所以,上述代码才会将父类的无参构造方法自动运行。未完待续…
Love and Share!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值