黑马程序员_java基础之面向对象(二)

来源:互联网 发布:淘宝备注怎么备注 编辑:程序博客网 时间:2024/05/22 04:03

 ------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

这篇主要想写下面向对象中的继承和多态。

继承
继承的格式:
class 子类名 extends 父类名 {}
继承的特点:
a: 在java语言中只支持单继承,不支持多继承 , 但是支持多层继承
继承的注意事项:
a: 子类只能继承父类非私有的成员
b: 子类不能继承父类的构造方法,但是可以使用super访问
c: 不能为了某一个功能去使用继承

那么什么时候使用继承呢?
继承其实体现的是一种"is a"的关系 .
举例:
水果
香蕉
苹果
继承中的成员访问特点:
成员变量:
变量的访问遵循的是"就近原则" 
查找顺序:
a: 在子类的局部位置查找
b: 在子类的成员位置查找
c: 在父类的成员位置查找
d: 就报错啦


this和super的访问格式:
this表示的是本类对象的引用,谁调用我方法中的this就带表谁
super: 是父类存储空间的一个标示(可以理解为父类对象的引用) ;

成员变量的格式:
this.变量名 本类的成员变量
super.变量名 父类的成员变量
成员方法的格式:
this.方法名(...) 本类的成员方法
super.方法名(...)父类的成员方法
构造方法的格式:
this(...) 本类的其他的构造方法
super(...) 父类的构造方法
构造方法:
子类的构造方法都要去访问父类的无参的构造方法 , 其实每一个构造方法的第一行是super()


Object 类: 是所有类的根类 , 所有的类都直接或者间接的继承自该类


如果父类中没有无参的构造方法,那么子类如何进行初始化?
解决方案:
a: 在父类中添加一个无参的构造方法
b: 可以使用super来访问父类中有参的构造方法
c: 可以使用this关键字方法本类其他的构造方法,但是其他的构造方法需要使用super显式的访问父类有参的构造方法
成员方法:
查找顺序:
a: 在子类中查找
b: 在父类中查找
c: 就报错啦
方法重写与方法重载的区别

方法重写: 在子中出现了和父类中一模一样的方法(方法名 , 参数列表 , 返回值类型) , 这种想象就是方法重写
方法重载: 在一个类中, 允许同时存在一个以上的同名方法,只要它们的参数列表不同,和返回值无关
参数列表不同:
参数的个数不同
参数的类型不同


Overload
Override


final关键字
final是一个状态修饰符:表示的意思是:最终的
final的特点:
final可以用来修饰类 , 变量 , 方法


被final修饰的类不能被子类继承
被final修饰的变量其实是一个常量, 不能被重新赋值

final Student s = new Student() ;// final修饰的是引用数据类,指的是地址值不能发生改变


被final修饰的方法不能被子类重写


多态(动态绑定机制)
多态的概述
多态: 同种事物在不同时刻表现出来的多种状态
前提:
a: 需要有继承关系
b: 需要有方法重写,其实没有方法重写,也是可以的,但是没有意思
c: 需要有父类的引用指向子类对象
父 f = new 子() ;
多态的成员访问特点:
成员变量:
编译看左边 , 运行看左边 
构造方法:
子类在初始化的时候,都会去访问父类的无参的构造方法
成员方法:
编译看左边 , 运行看右边
静态的成员方法:
编译看左边 , 运行看左边
多态的好处和弊端
好处
a:提高了代码的复用性(靠继承保证)
b:提高了代码的扩展性 (把父类作为参数传递)


class Animal {
public void eat() {}
}


class Cat extends Animal {
public void eat() {}
}


class Dog extends Animal {
public void eat() {}
public void run() {}
}


class Test {
public void show(Animal a) {
a.eat() ;
}
}

弊端:
不能访问子类特有的功能


Animal a = new Dog() ;// 向上转型

如果我们想访问子类特有的功能,那么需要使用向下转型


向下转型的格式:
子类名 对象名 = (子类名)父类的引用 ;


Dog d = (Dog)a ;

0 0
原创粉丝点击