1.为什么需要继承?
1.提高代码的重用性;
2.提高程序扩展性。
2.java继承的语法格式
java继承的关键字是:extends
格式:
public class 子类名 extends 父类名 {
}
注意:java的继承属于单继承。
3.子类能继承到父类的那些方法和属性
1.子类和父类在同一个包下
公有的,受保护的属性和方法能被子类继承访问。
2.子类和父类不在同一个包下
公有的属性和方法能被子类继承访问。
4.方法的重写
满足方法重写的条件:
1.方法名,返回值类型,参数个数以及参数类型都必须要和父类的完全相同。
2.访问修饰符可以大于或者等于父类的访问修饰符。
实现重写后,如何调用方法呢?
你看new关键字后的构造方法是谁的,那么就会优先调用谁的方法。
他们之间存在一个继承关系,如果调用的方法在子类中不存在,那么就会调用父类中
定义的方法。
实现继承后,创建子类的对象,在调用方法的时候,会优先执行子类的方法,如果子类
没有改方法,则调用父类的方法。
5.自动转型
向上转型 自动转型
short s = 10;
int i = s;
向下转型 强制转型
short s2 = (short)i;
如果要使用自动转型就必须要存在继承关系。
格式:
父类 对象名 = new 子类构造函数();
Student stu = new UNStudent();
缺点:如果使用了自动转型,就无法调用子类自己的方法,只能调用父类中已经定义过的方法。
优点:父类包含了子类,所以在使用过程中可以用父类对象名去代替子类的对象,在使用过程中,还是会优先调用子类中的方法,除非子类没有这个方法,才会去调用
父类的方法。
6.多态
多态不是单一的技术点,二是多个技术点的集合。
包含:方法重载,继承,方法重写,自动转型等技术。
例:
Manage.java
package cn.netjava.lesson4;
/**
* 学生管理类
* @author Administrator
*
*/
public class Manager {
/**
* 主函数
* @param args
*/
public static void main(String [] args){
//实例化一个大学生对象
Student un = new UNStudent();
un.setName("张三");
//un.study();
//un.test();
//实例化一个大学生对象
Student stu = new Student();
stu.setName("里斯");
//stu.study();
//stu.test();
//实例化一个大学生对象
Student x = new XStudent();
x.setName("王五");
//x.study();
//x.test();
Teacher tea = new Teacher();
tea.teach(un);
tea.teach(stu);
tea.teach(x);
}
}
Teacher.java
package cn.netjava.lesson4;
public class Teacher {
public void teach(Student un){
un.study();
}
}
Student.java
package cn.netjava.lesson4;
/**
* 学生类
* @author Administrator
*
*/
public class Student {
private String name;//姓名
private int score;//学分
/**
* 给姓名属性赋值的方法
* @param name姓名参数
*/
public void setName(String name){
this.name = name;
}
/**
* 获取姓名属性值的方法
*/
public String getName(){
return name;
}
/**
* 学习的方法
*/
protected void study(){
score++;
System.out.println(name+"学习中,学分是"+score);
}
public void test(){
System.out.println("Student父类");
}
}
UNStudent.java
package cn.netjava.lesson4;
/**
* 定义一个大学生类,该类继承自学生类
* @author Administrator
*
*/
public class UNStudent extends Student {
/**
* 重写父类的学习方法
*/
public void study(){
System.out.println("我是大学生的学习方法!");
}
/**
* 定义一个玩的方法
*/
public void play(){
System.out.println("我打羽毛球!");
}
}
XStudent.java
package cn.netjava.lesson4;
public class XStudent extends Student {
}
练习:
people去看喜剧电影
体现继承和重写,自动转型。
Cinema.java
public class Cinema {
public static void main(String [] args){
Movie mo = new COMovie();
mo.setName("电影(一)");
mo.setStyle("喜剧片");
Movie moo = new ACMovie();
moo.setName("电影(二)");
moo.setStyle("动作片");
People peo = new People();
peo.setName("焦怡雯");
peo.seemovie(mo);
peo.seemovie(moo);
}
}
Movie.java
public class Movie {
private String name;
private String style;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setStyle(String style){
this.style = style;
}
public String getStyle(){
return style;
}
}
People.java
public class People {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void seemovie(Movie m) {
System.out.println(name + "看了一部电影" + "电影名:" + m.getName() + "电影类型:"
+ m.getStyle());
}
}
分享到:
相关推荐
类的继承与派生 注释详细 虚拟继承,派生对象访问 操作多多
实验四 类的继承与多态实验1.理解软件重用性的一种形式——继承。 2.能够通过继承已有的类创建新类。 3.理解基类和派生类的概念。 4.能够在派生类中使用构造函数和析构函数 5.学习虚基类在解决二义性问题中的...
FEDay就是前端日,在这里:...我的主题是《无类继承:JavaScript面向对象的根基》,主要是从JS中面向对象的历史讲起,一直到元类继承的实现。相关的项目在这里:https://github.com/aimingoo/metameta
给定一个头文件Vec.h,其中有抽象类模板VECROR设计。还有插入运算符重载、抽取运算符重载的普通c++函数...1、将类模板VECTOR作为基类,通过公共继承派生一个新的类模板Vector(向量类)和一个新的自定义字符串了String。
使用如下的例子来解释多重继承,假设要实现以下四种动物: Dog:狗 Bat:蝙蝠 Parrot:鹦鹉 Ostrich:鸵鸟 实例:类的多重继承实现,首先,主要的类层次仍按照哺乳类和鸟类设计。 具体实现: class Animal(object): ...
易语言面向对象学习 1 ...四.再说继承 9 五.类的多态性 11 六.虚拟方法 13 七.总结 14 (1)对象的构造: 14 (2)对象的析构: 14 (3)类的封装: 15 (4)继承: 15 (5)多态性: 15 (6)虚拟方法: 15
继承与派生这是第四讲类的继承与派生继承与派生继承与派生很详细
C++类的继承练习(Class inheritance exercise)
第四章 面向对象的概念和 Java 实现-2 回顾 类是具有相同属性和行为的一组对象的 集合 , 对象是类的实例 封装是隐藏对象实现细节的过程,以便不让用户看到实现的细节 类可用Class 来定义,类的变量和方法可被该类的...
也就是说,并未在类继承时实现了真正意义的封装。 笔者历经多年javascript的开发,痛彻体会javascript面向对象编程的不便性,精心制作了一个类的定义与继承功能的js,实现了在javascript中对类的定义、继承、封装...
一个类如果实现一个接口,那么它就需要实现接口中定义的全部 ( ) , 否则该类就必须定义...4. 在 Java 语言中 ,所有的类都直接或间接继承自 ( ) 类 。 5. 一个 Lambda 表达式由三个部分组成,分别为 ( ) 、 ( ) 和 ( )
教学内容 本课时讲授内容为第八章 《Python面向对象编程》的第四节继承的5小节和第五节的1小节: 1. 使用继承 2. 抽象基类 3. 多态 4. 多重继承 5. 混合继承 1. 运算符重载 3. 教学计划 1. 回顾上节教学内容,复习...
1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................
多继承:子类继承多个父类四.子类重写父类的同名属性和方法五.子类调用父类同名属性和方法六.多层继承八.super()的使用 一.继承介绍 现实中的继承 程序中的继承 在程序中,继承描述的是多个类之间的所属关系。 ...
创建两个类Car和Motorbike从Vehicle类继承,并在这两个类中实现NumOfWheels方法。 在Car类中,应当显示"四轮车"信息; 而在Motorbike类中,应当显示"双轮车"信息。 创建一个带main方法的类,在该类中创建Car和...
28、Anonymous Inner Class (匿名内部类) 是否可以 extends(继承)其它类,是否可 以 implements(实现)interface(接口)? ............................................................................ 22 29、...
pytyhon基础——类与对象(2) 四、类的继承与重写1.继承2.多重继承3.重写五、类的多态六、特殊方法七、属性和方法总结 四、类的继承与重写 1.继承 继承是面向对象三大特性之一 - 通过继承我们可以使用一个类获取到...
1. 定义Base类,再由Base类派生出Teacher类和干部类Cadre,采用多重继承的方式由这两个类派生出新类Teacher_Cadre(教师兼干部类)。要求: (1)Base类中包含姓名、年龄、性别、地址、电话数据成员。 (2)在...