Java 继承


0x00   继承

在Java中子类自动继承父类所有可继承的属性和方法。一个类如何继承自另一个类?用extends关键字声明即可。

举个例子:

class Animal
{
	String name;
	void show()
	{
		System.out.println("Animal");
	}
}


class Cat extends Animal  //Cat类继承自Animal类
{
<span style="white-space:pre">	</span>public void showName()
	{
		System.out.println("Cat: "+name);  
	}
}

// 测试类
public class Test {

	public static void main(String[] args) {
		Cat cat=new Cat();
		cat.name="Cathy";
		cat.show();
		cat.showName();
	}
}

//输出结果
Animal
Cat: Cathy

由上可以看到Cat类继承了Animal类,所以可以访问Animal类的name属性和show() 方法。

0x01 访问修饰符

访问控制级别
访问范围privatedefaultprotectedpublic
本类   √   √   √   √
同一包中    √   √   √
子类中     √   √
全局范围      √

0x02 相关关键字this,super,final

this

常用的应该是这个吧,明确的去访问一个类的成员变量,解决与局部变量名称冲突的问题。
class Student
{
<span style="white-space:pre">	</span>Stirng name;
<span style="white-space:pre">	</span>public Student(String name)
	{
<span style="white-space:pre">		</span>this.name = name;
	}
}
Over,这里只说最常用的这个。

super

1. 使用super关键字调用父类的成员变量和成员方法
super.成员变量
super.成员方法([参数1,参数2……])
如, super.show();

2. 使用super关键字调用父类的构造函数
super([参数1, 参数2…])
注:通过super调用父类的构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次。

final

1. final 修饰的类不能被继承。
2. final 修饰的方法不能被子类重写
3. final 修饰的变量(成员变量和局部变量)是常量,只能赋值一次。
怎么用final修饰? 把final加上呗
比如 final class A{……}    // 类
final String name; // 属性
public final void show(){……} // 方法

0x03 值传递和引用传递

复杂数据类型属于引用数据类型,如数组
基础数据类型属于值传递(boolean/char/byte/short/float/double/int/long)
什么是值传递? 拿当初学C++的例子来说
ublic class Test {
	static void swap(int x,int y)
	{
		int t=x;
		x=y;
		y=t;
	}
	public static void main(String[] args) {
		int x=5,y=10;
		swap(x,y);
		System.out.println("x="+x+" y="+y);
	}
}

猜猜上面的运行结果?  没错,x=5   y=10,  并没有达到交换的目的
基本数据类型按值传递,相当于复制一份过去 ; 
引用类型按地址传递,根据地址使用用一份数据,如果数据被改,原有的数据被修改


0x04 对象的类型转换

可以将子类对象当做父类对象使用
Animal animal=new Cat(); // 将Cat对象当做Animal类型使用

1. 不能通过父类变量去调用子类中父类没有的方法。

我们可以将Animal类型强制转换为Cat型, Cat cat = (Cat) animal ;

2. 在强制转换里,必须知道animal所指向的实体,如果来个 Anmial animal = new Fish()  这时强转就会出错
针对这种情况,Java提供了一个关键字 instanceof, 它可以判断一个对象是否为某个类(或接口)的实例或者子类实例
if(anmial instanceof Cat)
{
Cat cat = (Cat) animal;
}

end.


ps,  
 1 . 如果有误,请指出错在哪,别一句“傻逼”,“有错”之类的直接就走了……










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值