黑马程序员——java面向对象-继承
2015-05-31 00:39
459 查看
——- android培训、java培训、期待与您交流! ———-
一、 面向对象
面向对象设计程序的思想,执行变指挥
三大特征 封装 继承 多态
1. 继承
1.1 继承由来
多个类中,出现了相同的成员,代码重复就很高
例:以下程序代码重复过多,将相同的内容抽取来,形成另外的一个类,人类
class Teacher extends Person{
String name;
int age;
public void eat(){}
public void teacher(){}
}
class Student extends Person{
String name;
int age;
public void eat(){}
public void study(){}
}
子类共性抽取出父类,产生类和类之间的继承关系
让老师类,和学生类,都是使用人类中的成员,减少代码
使用 extends关键字写继承
好处: 代码减少,扩展性强,导致了多态
弊端:类耦合性强
1.2 继承特点
1——单继承
一个类只能同时继承一个父类,不能同时继承多个类
单继承为什么要这样设计:避免程序的安全问题
如果多继承,父类中出现了相同方法,子类中不
4000
能判断调用的是谁
Java设计的时候,取消了多继承
2——多层继承
多层继承,多重继承,不等于多继承类和类之间可以进行层层继承
A 是 B的父类,B是C的父类 C是D的父类
1.3 继承体系
类之间的关系 is … a
顶层类,是整个体系最共性的,底层类是整个体系最多,既有共性又有特性
学习顶层,使用底层
成员变量
2.1 子类有用子类,子类没有用父类
2.2 子类中super.调用父类成员变量
super 表示的意义,父类存储空间的标识
调用父类静态成员,使用类名调用
成员方法
3.1 子类覆盖父类方法
成员方法,如果子类有,运行子类,如果子类没有,运行父类
子类和父类中出现了一模一样的方法
方法的另一个特性,子类重写父类方法
3.2 权限大于等于父类,方法声明要一致
但是子类重写父类方法,必须保证子类方法权限大于或者等于父类方法权限
public > protected > 默认 >private
3.3 案例,手机扩展案例
构造方法
创建子类对象的时候,父类构造方法也运行了
如果父类中重载了很多构造方法,对于子类的构造方法来讲
只要访问到其中一个即可
总结子类父类构造方法的特点
4.1 子类所有构造方法第一行就是super(),调用父类空参数构造方法
4.2 如果父类中没有空参数构造方法,子类构造方法必须手写super传递参数,否则编译失败
4.3 子类构造方法写this或者super,选择一个,保证子类可以间接或者直接访问过父类空参数构造
子类所有构造方法,无论如何必须访问过父类构造方法
这是学习面向对象继承部分的总结,以及部分典型的代码。
一、 面向对象
面向对象设计程序的思想,执行变指挥
三大特征 封装 继承 多态
1. 继承
1.1 继承由来
多个类中,出现了相同的成员,代码重复就很高
例:以下程序代码重复过多,将相同的内容抽取来,形成另外的一个类,人类
class Teacher extends Person{
String name;
int age;
public void eat(){}
public void teacher(){}
}
class Student extends Person{
String name;
int age;
public void eat(){}
public void study(){}
}
子类共性抽取出父类,产生类和类之间的继承关系
让老师类,和学生类,都是使用人类中的成员,减少代码
使用 extends关键字写继承
class Person { String name; int age; public void eat(){} } class Teacher extends Person { public void teacher(){} } class Student extends Person { public void study(){} }
好处: 代码减少,扩展性强,导致了多态
弊端:类耦合性强
1.2 继承特点
1——单继承
一个类只能同时继承一个父类,不能同时继承多个类
单继承为什么要这样设计:避免程序的安全问题
如果多继承,父类中出现了相同方法,子类中不
4000
能判断调用的是谁
Java设计的时候,取消了多继承
2——多层继承
多层继承,多重继承,不等于多继承类和类之间可以进行层层继承
A 是 B的父类,B是C的父类 C是D的父类
1.3 继承体系
类之间的关系 is … a
顶层类,是整个体系最共性的,底层类是整个体系最多,既有共性又有特性
学习顶层,使用底层
成员变量
2.1 子类有用子类,子类没有用父类
2.2 子类中super.调用父类成员变量
super 表示的意义,父类存储空间的标识
调用父类静态成员,使用类名调用
class Fu { int x = 1 ; } class Zi extends Fu { int x = 2; public void show(){ int x = 3 ; System.out.println(super.x); } } class ExtendsDemo3 { public static void main(String[] args) { Zi z = new Zi(); z.show(); System.out.println(z.x); } }
成员方法
3.1 子类覆盖父类方法
成员方法,如果子类有,运行子类,如果子类没有,运行父类
子类和父类中出现了一模一样的方法
方法的另一个特性,子类重写父类方法
3.2 权限大于等于父类,方法声明要一致
但是子类重写父类方法,必须保证子类方法权限大于或者等于父类方法权限
public > protected > 默认 >private
3.3 案例,手机扩展案例
class Phone { //打电话功能 public void call(){ System.out.println("拨号打电话"); } //接电话功能 public void receive(){ System.out.println("铃声"); System.out.println("显示号码"); } } class NewPhone extends Phone { //打电话功能,手机拿在手上,就可以拨号 public void call(){ //拨号功能,父类已经实现了,子类没有必要自己在做了 //直接使用父类的功能 //调用父类的 call方法 super.call(); } //接电话功能 public void receive(){ //铃声和号码显示,父类中已经实现过了,子类没有必要自己写 super.receive(); System.out.println("彩铃"); System.out.println("大头像"); System.out.println("归属地"); } } class ExtendsTest { public static void main(String[] args) { //创建手机对象,调用方法 Phone p = new Phone(); p.call(); p.receive(); System.out.println("======================="); NewPhone np = new NewPhone(); np.call(); np.receive(); //System.out.println("Hello World!"); } }
构造方法
创建子类对象的时候,父类构造方法也运行了
如果父类中重载了很多构造方法,对于子类的构造方法来讲
只要访问到其中一个即可
总结子类父类构造方法的特点
4.1 子类所有构造方法第一行就是super(),调用父类空参数构造方法
4.2 如果父类中没有空参数构造方法,子类构造方法必须手写super传递参数,否则编译失败
4.3 子类构造方法写this或者super,选择一个,保证子类可以间接或者直接访问过父类空参数构造
子类所有构造方法,无论如何必须访问过父类构造方法
class Fu { Fu(int a){ System.out.println("父类构造方法"); } } class Zi extends Fu { Zi(){ this(false); System.out.println("子类构造方法"); } Zi(boolean b){ super(0); } } class ExtendsDemo5 { public static void main(String[] args) { new Zi(); } }
这是学习面向对象继承部分的总结,以及部分典型的代码。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统