浅谈Object Head First Java笔记

在java中的所有类都是从Object这个类继承出来的
实际上所有的类都是从对象给继承出来的。你可以把自己的类想象成
public class Dog extends Object{

如果dog类本就是继承Canine,编译器会知道改成让Canine去继承Object
为什么需要Object这个类呢?
如果java中没有共同的父类,那就无法写出像ArrayList这种可以处理各种类的类。
Object类有两个主要的目的:
1.作为多要让方法可以应付多种类型的机制。
2.提供java在执行期间对任何对象都需要的方法的实现程序代码(让所有的类都会继承到)


              既然多态类型这么有用,如果把所有参数类型和返回类型都设定成Object类型的话:
Object o = new Object();
o.bark();//这样的话编译器会报错。
当把对象装入ArratyList<Dog> dogList = new ArrayList<>();
Dog dog1 = new Dog();
dogList.add(dog1);
Dog d = dogList.get(0);//将Dog赋值给新的Dog引用变量;
但是如果把它声明成Object的话。
ArratyList<Object> dogList = new ArrayList<>();
Dog dog1 = new Dog();
dogList.add(dog1);
Dog d = dogList.get(0);//无法通过编译,对ArrayList<Object>调用get()方法会返回一个Object类型。

任何从ArrayList<Object>取出的东西都会被当作Object类型的引用而不管他原来是什么。

假设Snowboard类中有trun();getAir();shred();loseControl();方法
Snowboard s = new Snowboard();
Object o = s;
o只能控制到object的方法;

s则能控制到所有的方法;


public class DogTest {

	public static void main(String[] args) {
		Dog dog = new Dog();
		Animal animal = dog;
		dog.bark();
		animal.bark();//无法通过编译
		
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值