Java(继承)

继承

一、一个新类从已有的类那里获得其已有的属性和方法,这种现象叫类的继承。
二、 这个新类被称为子类,也叫派生类,已有的那个类叫父类,也叫做基类。
三、 继承的好处
  • 代码得到极大的重用。
  • 形成一种类的层次体系结构。
  • 为多态创造条件。
四、 继承的格式;
class 子类 extends 父类
{
	.....
}
---或者
class 需要继承的类 extends 被继承的类
{
	.....
}

继承实例:

class Human//定义一个 Hunman类。
{
	public String name;//有名字
	public int age;//有年龄
}
class Student//定义一个 student类。既然是学生,就一定有人的所有特点。
{
	public String name;//学生也是人,所以学生也有人的特点
	public int age;

	//学生就肯定有分数。
	public double score;//分数
}
class Grraduate//研究生
{
	//研究生就肯定有人的特点,学生的特点。
	public String name;//学生也是人,所以学生也有人的特点
	public int age;

	public double score;//分数

	//但是研究生肯定有导师。
	public String daoshi;//存放导师的名字。
}

这样写很麻烦。重复定义了不少变量
所以要运用继承

class Human//Human的子类是Student 
{
	public String name = "张三";
	public int age = 22;
}
class Student extends Human//学生类继承人类。//Student的父类是Human
{
	//public String name;
	//public int age;
	//既然是继承,所以这个学生类已经有了上面Human类的属性。
	//不需要重复定义了。
	public double score = 66.6;
}
class Graduate extends Student//研究生  //Graduate的父类是Student
{
	
	//public String name;
	//public int age;

	//public double score;
	//理由同上
	public String daoshi = "李四";//存放导师的名字。
}
public class Test1
{
	public static void main(String args[])
	{	
		//验证
		Graduate gd = new Graduate();//我们只new了一个研究生对象。
		System.out.printf("%s,%f\n",gd.name,gd.score);
		//如果能输出Human类中的name和Student类中的score,那么就说明继承成功。
		//张三,66.600000 输出成功
	}
}

什么能继承,什么不能继承。

  • 被继承的类中的私有制成员不能被继承。
class A//父类A
{
	public int i; //公有的变量i
	protected int j; //被保护的变量j
	private int k;  //私有的变量k

	public void g()//公有的方法g
	{

	}

	protected void b()//被保护的方法b
	{

	}
	private void s()//私有的方法s
	{

	}
}
class B extends A
{
	public void f()
	{
		i = 10;//如果i能被赋值,说明公有制属性继承成功
		j = 20;//如果j能被赋值,说明保护型属性继承成功
		k = 30;//如果k能被赋值,说明私有制属性继承成功
		//k=30会报错。证明私有的属性不能被继承
		
		//方法
		g();//如果能调用g,说明能继承公有的方法
		b();//如果能调用b,说明能继承保护的方法
		s();//如果能调用s,说明能继承私有的方法
		//s()会报错。证明私有的方法不能被继承。
		
		//证明了,被继承的类中的私有制成员不能被继承
	}
}

public class Test1
{
	public static void main(String args[])
	{

	}
}

子类内部可以访问父类非私有的成员。
私有成员无法被子类访问。

通过子类对象名只能访问从父类继承过来的非私有成员。

总结:私有不能被继承。
  1. 私有物理上已经被继承过来 ,只不过逻辑上程序员不能去访问它。 因此继承必须慎重,否则会浪费内存。
  2. 继承的时候,私有成员实际上也被继承了,并在内存中分配了空间。但是语法上不能访问私有的成员。但是私有成员占了内存。
  3. 如果一个父类中有很多私有成员,只有一个非私有成员的时候。子类继承这个父类,虽然只能访问那个非私有成员,但是内存上,也已经把私有成员继承了过来。只是无法访问。

子类只能有一个父类。一个父类可以有若干个子类。
静态也可以被继承。
构造方法不能继承。构造方法是一个特殊的方法,不能被继承。


不同访问修饰符的权限
名称public(公有)protected(保护)default(默认)private(私有)
同包同类
同包不同类访问
同包不同类继承
不同包继承
访问不同包无任何关系的类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值