`
612星球
  • 浏览: 9418 次
  • 性别: Icon_minigender_2
文章分类
社区版块
存档分类
最新评论

四.类的继承

 
阅读更多
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());
}

}

分享到:
评论

相关推荐

    实验四、类的继承与派生 类的继承与派生

    类的继承与派生 注释详细 虚拟继承,派生对象访问 操作多多

    实验四类的继承与多态实验.doc

    实验四 类的继承与多态实验1.理解软件重用性的一种形式——继承。 2.能够通过继承已有的类创建新类。 3.理解基类和派生类的概念。 4.能够在派生类中使用构造函数和析构函数 5.学习虚基类在解决二义性问题中的...

    南邮java实验二类继承.doc

    Java 类继承实验报告 本实验报告的主要目的是掌握 Java 中的类定义、对象创建和使用、类继承的概念,以及派生类的定义。实验中,我们将定义一个名为 MyRectangle 的类,代表矩形,并派生出一个名为 MyCuboid 的子类...

    第四届FEDay演讲主题:无类继承

    FEDay就是前端日,在这里:...我的主题是《无类继承:JavaScript面向对象的根基》,主要是从JS中面向对象的历史讲起,一直到元类继承的实现。相关的项目在这里:https://github.com/aimingoo/metameta

    继承和派生向量类模板和字符串类

    给定一个头文件Vec.h,其中有抽象类模板VECROR设计。还有插入运算符重载、抽取运算符重载的普通c++函数...1、将类模板VECTOR作为基类,通过公共继承派生一个新的类模板Vector(向量类)和一个新的自定义字符串了String。

    Python语言基础:类的多重继承.pptx

    使用如下的例子来解释多重继承,假设要实现以下四种动物: Dog:狗 Bat:蝙蝠 Parrot:鹦鹉 Ostrich:鸵鸟 实例:类的多重继承实现,首先,主要的类层次仍按照哺乳类和鸟类设计。 具体实现: class Animal(object): ...

    易语言面向对象编程 面向对象学习

    易语言面向对象学习 1 ...四.再说继承 9 五.类的多态性 11 六.虚拟方法 13 七.总结 14 (1)对象的构造: 14 (2)对象的析构: 14 (3)类的封装: 15 (4)继承: 15 (5)多态性: 15 (6)虚拟方法: 15

    4类的继承与派生继承与派生

    继承与派生这是第四讲类的继承与派生继承与派生继承与派生很详细

    第4章继承和多重继承.ppt

    继承是面向对象编程(OOP)中的一种机制,允许一个类继承另一个类的所有成员变量和成员函数。继承可以实现代码的重用和扩展,提高编程效率和代码的可维护性。 一、继承的概念 继承是从已定义的类中导出新类时,新...

    第十章 C#继承 派生类 派生类的构造方法.docx

    C#继承和派生类的构造方法 在C#中,继承是面向对象编程的基本概念之一。继承是指一个类可以继承另一个类的成员字段和函数,从而实现代码的复用和扩展。 在C#中,我们可以通过两种方式实现继承,即实现继承和接口...

    类的继承练习_inheritance_类的继承练习_C++_pineoce_

    C++类的继承练习(Class inheritance exercise)

    第11章 继承与派生.doc

    在私有继承中,派生类继承基类的所有成员,但基类中的所有成员都变为私有成员不可访问。 protected 继承是指派生类继承基类的所有成员,但基类中的保护成员只能在派生类中访问。 例如,在 Student1 类中,它继承了 ...

    C语言程序设计 继承性和派生类PPT课件.pptx

    在第四页中,作者介绍了派生类的定义格式,包括单继承的定义格式和多继承的定义格式。单继承的定义格式为"class <派生类名> : <继承方式><基类名> { <派生类新定义成员> };",多继承的定义格式为"class <派生类名> : ...

    类的继承、派生、多态性C++课程实验报告.pdf

    单继承是指一个类继承另一个类,而多继承是指一个类继承多个类。 在本实验中,我们定义了一个基类vehicle和三个派生类bicycle、motorcar和motorcycle。vehicle类中申明了两个虚拟函数Run和Stop,这两个函数用于实现...

    《java面向对象程序设计-继承和多态》教案.doc

    第四章 面向对象的概念和 Java 实现-2 回顾 类是具有相同属性和行为的一组对象的 集合 , 对象是类的实例 封装是隐藏对象实现细节的过程,以便不让用户看到实现的细节 类可用Class 来定义,类的变量和方法可被该类的...

    Javascript编程 类的继承及封装:Class

    也就是说,并未在类继承时实现了真正意义的封装。 笔者历经多年javascript的开发,痛彻体会javascript面向对象编程的不便性,精心制作了一个类的定义与继承功能的js,实现了在javascript中对类的定义、继承、封装...

    java继承与多态PPT教案学习.pptx

    例如, class appl5_2 extends superclass,这里appl5_2类继承自superclass类,并且可以继承父类的构造方法。 四、多态 多态是面向对象编程语言的另一个重要概念,多态是指不同的对象可以对同一个消息作出不同的...

    Java习题四.docx

    一个类如果实现一个接口,那么它就需要实现接口中定义的全部 ( ) , 否则该类就必须定义...4. 在 Java 语言中 ,所有的类都直接或间接继承自 ( ) 类 。 5. 一个 Lambda 表达式由三个部分组成,分别为 ( ) 、 ( ) 和 ( )

    JAVA继承,接口,抽象类等练习[参考].pdf

    这意味着B类继承自A类,并继承了A类的所有成员变量和方法。 十二、Java类的继承关系 在JAVA中,每个类只能继承一个父类(A)。这意味着一个类只能继承一个父类,但可以实现多个接口。 十三、继承和多态 在JAVA中...

Global site tag (gtag.js) - Google Analytics