java学习笔记之11-类,继承(向上转型)

合集下载

java学习总结-类

java学习总结-类

java学习总结-类的继承总结
1.关键字:extends
2.子类在继承父类后,会拥有父类的所有成员
3.需要注意的问题:
1).java只支持单继承,就好比一个孩子只能有一个父亲.
2).多个类可以继承同一个父类,就像几个孩子拥有一个共同的父亲一样.
3).允许多层继承,比如,C类继承自B类,而B类继承自A类,就好比孙子,父亲,爷爷之间的关系.显然,C类是B类的儿子,B类是A类的儿子. 4.子类根据需要可以修改已经继承到的变量或方法,前提是子类中变量名或方法名必须和父类一致,这样,就能起到屏蔽父类中变量或方法的作用.如果子类修改了已经继承到的东西(变量或方法),而且还希望使用父类的的那个东西,那么需要使用super关键字来帮助实现.如super.变量名;super.方法名([参数a],[参数b]);
5.super调用父类构造方法的代码应该在子类构造方法的首行,并且只能出现一回.。

培训学习资料-java类的继承-2022年学习资料

培训学习资料-java类的继承-2022年学习资料

IAVA-继承-0java类的继承本节学习目标:-1.继承的思想-2.JAVA语言继承的实现1,什么是继承?-面向对象程序设计中,可以在已有类的基础上定义-新的类,而不需要把已有类的内容重新书写一遍,-这就叫继承。

已有的类称为基类或父类,在此基-础上建立的新类称为派生类或子类。

-运用继承,父类的特性不必再重新定义,就可以被其它类继承。

-继承是面向对象编程技术的一个重要机制。

较好地-解决了代码重用问题。

-任何一个类都可以作为基类,从这个基可以派生-出多个子类,这些派生的类不仅具有基类的特征,-而且还可以定义自己独有的特征。

2、ava语言中继承的定义-定义继承的形式为:-[类修饰符]-class类名-[extends-父类]-类体-两个类间的继承关系由extends关键字指明。

-33,举例1-class Student extends Person-class Person-private fl at java,english;-{-String name;-StudentString n,int a,floa j,float e-private int age;-PersonString n,int a-supern,a; name=n;age=a;-java=j;english=e;-}-public void print-void s ow-System.out.printin"My name is "+name+".";-System.out.pr ntin"java score is "+java+".";-System.out.printIn"eng scor is "+english+".";-4举例1(续)-class Xuesheng-public static void mainString[]args--Student s1=new Student"tct1",18,67,89;-s1.show;-}-54、关于AVA语言继承的几点说明:-◆如果子类继承了父类,则子类自动具有父类的全部-数据成员(数据结构)和成员方法(能);但是,子类-对父类成员的访问有所限制;-◆子类可以定义自己的数据成员和成员函数,同时也-可以修改父类的数据成员重写父类的方法;-◆父类、子类都是“相对”的;-◆在Java中,Object类为特殊超类或基类,所有的-类都直接或间地继承Object;-◆Java语言只支持单继承,如果要使用多继承的机制,-可以运用将要讲解的接口interface-55、包括继承的类成员访问权限-private:只允许该成员自身所属的类访问,不允许-子类访问;-默认修饰符:允许定义的类自身以及处于同一个包-中的其它类访问(包括子类;不允许不同包中的子-◆-protected:保护成员,允许定义它类自身以及处于-同一个包中的其它类访问(包括子类;还允许不同-包中的子类访问。

java向上转型和向下转型

java向上转型和向下转型
三是需要做好备注等注释工作。由于像向下转型等操作是容易出现问题的地方。为此在进行类似的操作时,最好在行注释或者块注释中能够进行说明。这 对于后续的维护与代码的升级是很有帮助的。好记性不如烂笔头。如果没有做好相关注释的话,这次可能没有问题,但是下次再代码升级或者其他原因需要调整或者 重写原有的代码时,就可能会因为疏忽而导致转型的失败。
笔者在此强调一遍,在进行向下转型时一定要进行强制转换。即通过子类对象名字=(子类名)父类对象名字进行赋值,而不能够向向上转型那样进行隐 式转换。
三、确保向下转型的准确性。
从以上分析中可以看出,向下转型往往被认为是不安全的。当在程序中执行向下转型操作的时候,如果父类对象不是子类对象的实例,就会发生编译器错 误。所以在执行向下转型之前要先作一件事情,就是判断父类对象是否为子类对象的实例。也就是说,先要想一想,燕子就是鸟类这个命题是否成立(在某些特定的 情况下这个伪命题可能会成立,如燕子的特性与鸟类的特性完全一致)。只有如此,向下转型才不会出现问题。在进行向下转型操作时,将特性范围小的对象转换为 特性范围大的对象肯定会出现问题。但是,如果两个转换的对象特性范围一样大的话,可那么就不会有问题了。
Girl g1=new MMGirl(); //向上转型
g1.smile();
MMGirl mmg=(MMGirl)g1; //向下转型,编译和运行皆不会出错
mmg.smile();
mmg.c();
Girl g2=ቤተ መጻሕፍቲ ባይዱew Girl();
//MMGirl mmg1=(MMGirl)g2; //不安全的向下转型,编译无错但会运行会出错
最后笔者再次提醒各位程序员,向上转型大家可以放心大胆的用。但是在使用向下转型技术时,大家要慎重,要按部就班(先判断后使用)的进行操作。

Java多态、向上转型、向下转型知识分享(讲解全面)

Java多态、向上转型、向下转型知识分享(讲解全面)

Java多态、向上转型、向下转型知识分享(讲解全⾯)多态(⽅法的多态、对象的多态)⽅法的多态1. 重写的多态(重要):⼦类继承⽗类,因此⼦类拥有⽗类属性和⽅法,如果⼦类重写⽗类⽅法,那么⽗类调⽤该⽅法的时候就会检查⼦类是否重写该⽅法,⼦类重写了就调⽤⼦类重写的⽅法,没有就调⽤⽗类⾃⼰的⽅法。

2. 重载的多态:⽅法⾥的形参列表不同,在调⽤时穿惨给符合的⽅法,不同的是实参个数调⽤不同的⽅法对象的多态(多态的核⼼)1. ⼀个对象的编译类型和运⾏类型可以不⼀致,也可以⼀直2. 编译类型在定义对象时,就确定了不能改变3. 运⾏类可以改变例如: Animal animal = new Dog(); animal的运⾏类型变成了Dog,编译类型仍然是Animal4. 编译类型看=的左边,运⾏类型看=的右边(编译 javac 运⾏是Java)向上转型⽗类引⽤指向⼦类对象(重要)语法:⽗类类型引⽤名 = new ⼦类类型( );向上转型调⽤⽅法的规则1. 可以调⽤⽗类中的所有成员(需遵守访问权限)2. 但是不能调⽤⼦类的特有的成员,因为在编译阶段,能调⽤哪些成员,是由编译类型来决定的3. 最终运⾏效果看⼦类(运⾏类型)的具体实现, 即调⽤⽅法时,按照从⼦类(运⾏类型)开始查找⽅法,然后调⽤,规则我前⾯我们讲的⽅法调⽤规则⼀致 重要!!属性没有重写!属性看编译类型(看下⽅代码)public class PolyDetail02 {public static void main(String[] args) {//属性没有重写之说!属性的值看编译类型Base base = new Sub();//向上转型System.out.println(base.count);// ?看编译类型输出10Sub sub = new Sub();System.out.println(sub.count);//? 输出20}}class Base { //⽗类int count = 10;//属性}class Sub extendsBase {//⼦类intcount = 20;//属性}向下转型⼦类对象引⽤名 = (⼦类类型)⽗类引⽤只能强转⽗类的引⽤,不能强转⽗类的对象,所以必须先向上转型,才能向下转,因为得先向上转得到⽗类的引⽤可以调⽤⼦类的所有成员,(向下转型可以得到⼦类的特有⽅法)总结:访问属性看编译类型,编译类型是谁就访问谁访问⽅法看运⾏类型,运⾏类型是谁就访问谁。

10_Java面向对象(继承、抽象类)_讲义

10_Java面向对象(继承、抽象类)_讲义

面向对象今日内容介绍◆继承◆抽象类第1章继承1.1继承的概念在现实生活中,继承一般指的是子女继承父辈的财产。

在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。

例如公司中的研发部员工和维护部员工都属于员工,程序中便可以描述为研发部员工和维护部员工继承自员工,同理,JavaEE工程师和Android工程师继承自研发部员工,而维网络维护工程师和硬件维护工程师继承自维护部员工。

这些员工之间会形成一个继承体系,具体如下图所示。

图1-1员工继承关系图在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。

1.2继承的格式&使用在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。

格式:class 子类 extends 父类 {}接下来通过一个案例来学习子类是如何继承父类的,如下所示。

Example01.java/** 定义员工类Employee*/class Employee {String name; // 定义name属性// 定义员工的工作方法public void work() {System.out.println("尽心尽力地工作");}}/** 定义研发部员工类Developer 继承员工类Employee*/class Developer extends Employee {// 定义一个打印name的方法public void printName() {System.out.println("name=" + name);}}/** 定义测试类*/public class Example01 {public static void main(String[] args) {Developer d = new Developer(); // 创建一个研发部员工类对象 = "小明"; // 为该员工类的name属性进行赋值d.printName(); // 调用该员工的printName()方法d.work(); // 调用Developer类继承来的work()方法}}运行结果如下图所示。

详解Java语言的继承机制

详解Java语言的继承机制

详解Java语言的继承机制Java是一门基于类的面向对象编程语言,而继承机制是Java语言中的重要特性之一。

通过继承,一个类可以从另一个类中继承属性和方法,并且可以在自己的类中添加或修改这些属性和方法。

本文将详细介绍Java语言的继承机制,包括继承的概念、继承的语法、继承的特性以及继承的使用方法等方面。

一、继承的概念继承是指一个类可以从另一个类中继承属性和方法。

被继承的类称为父类或基类,而继承的类称为子类或派生类。

父类可以包含一些属性和方法,子类可以通过继承这些属性和方法来复用代码、增强功能、实现多态等目的。

继承是面向对象编程中的一种基本概念,通过继承可以实现类之间的关系,构建类的层次结构。

二、继承的语法在Java语言中,可以通过使用关键字“extends”来实现继承。

具体的语法格式如下:public class 子类名称 extends 父类名称{\/\/子类的代码}在继承中,子类可以继承父类中的所有属性和方法,称之为子类的成员。

在子类中可以在方法调用中使用父类的成员,而不需要重新实现这些方法。

Java语言中的所有类都已经继承了Object类,因此可以直接使用Object 类中的方法。

三、继承的特性1.单继承和多重继承:Java语言中不支持多重继承,即一个子类只能继承一个父类。

相对于多重继承,单继承更简洁,避免了多重继承的复杂性和潜在的冲突。

如果需要实现多个父类的功能,可以使用接口来实现。

2.继承中的访问修饰符:在Java语言中,有四种访问修饰符:public、protected、default和private。

它们在继承中的作用如下:- public:子类可以访问父类中的public成员;- protected:子类可以访问父类中的protected成员,不同包下的非子类可以访问父类中的protected成员;- default:子类可以访问父类中的default成员,仅限于同一包下;- private:子类无法访问父类中的private成员。

【Java笔记】Java对象的向上转型与向下转型

【Java笔记】Java对象的向上转型与向下转型Java对象的向上转型与向下转型
向上转型
对象的向上转型,其实就是多态的写法:
⽗类名称对象名 = new ⼦类名称();
含义:创建⼀个⼦类对象,把它当做⽗类来看待使⽤。

Animal niki = new Cat();
注意:向上转型⼀定是安全的。

从⼩范围转向⼤范围。

(有点类似于⾃动类型转换...)
对象⼀旦向上转型为⽗类,那么就⽆法调⽤⼦类原本特有的内容。

向下转型
向下转型其实是⼀个【还原】的动作。

格式:
⼦类名称对象名 = (⼦类名称) ⽗类对象;
含义:
将⽗类对象,【还原】成为本来的⼦类对象。

注意事项:
1. 必须保证对象本来创建的时候,就是这个品种,才能向下转型成为这个品种。

2. 如果对象创建的时候不是这个品种,现在⾮要向下转型成为这个品种,就会报错。

java继承知识点总结

java继承知识点总结在Java编程语言中,继承是一种重要的面向对象编程的概念。

通过继承,一个类可以继承另一个类的属性和方法。

这使得代码可以更加灵活和可复用。

在这篇文章中,我们将介绍Java中继承的基本概念、语法和用法。

一、继承的基本概念继承是面向对象编程的一个重要特性。

它允许一个类(子类)继承另一个类(父类)的属性和方法。

通过继承,子类可以重用父类的成员变量和方法,同时也可以添加自己的新成员变量和方法。

这使得代码更加灵活和可维护。

在Java中,继承是通过关键字 extends 来实现的。

当一个类继承另一个类时,子类将继承父类的成员变量和方法,同时也可以重写父类的方法。

继承是Java中面向对象编程的基石,通常用于实现代码的重用和抽象。

二、继承的语法在Java中,通过关键字 extends 来实现继承。

例如:```javaclass Animal {String name;public void eat() {System.out.println("Animal is eating");}}class Dog extends Animal {public void bark() {System.out.println("Dog is barking");}}```在上面的例子中,类 Dog 继承了类 Animal。

这意味着,Dog 类将拥有 Animal 类的成员变量和方法。

同时,Dog 类也可以定义自己的成员变量和方法。

三、继承的特点在Java中,继承具有以下几个特点:1. 子类可以继承父类的成员变量和方法通过继承,子类可以访问父类的成员变量和方法。

这使得代码更加灵活和可复用。

2. 子类可以重写父类的方法子类可以重写父类的方法,以实现自己的特定逻辑。

这使得继承可以实现多态,使代码更加灵活和可扩展。

3. 子类可以添加自己的成员变量和方法通过继承,子类可以添加自己的成员变量和方法。

Java基础[继承]

• 方便项目的携带。 • 方便于使用,只要在classpath设置jar路径即
可。
• 数据库驱动,SSH框架等都是以jar包体现的。
Jar包的操作
通过jar.exe工具对jar的操作。
• 创建jar包 • jar -cvf mypack.jar packa packb
• 查看jar包 • jar -tvf mypack.jar [>定向文件]
一定会执行的代码; } Finally代码块只有一种情况不会被执行。就是在之前执行了System.exit(0)。
自定义异常
自定义类继承Exception或者其子类。 通过构造函数定义异常信息。 例:
Class DemoException extends Exception {
DemoException(String message) {
的区别。 思考:在开发时,分号是否需要呢?
包之间的访问
被访问的包中的类权限必须是public的。 类中的成员权限:public或者protected protected是为其他包中的子类提供的一种
权限 例程






教 育
四种权限
w
w
w
public protected default private
toString()
• 获取异常类名和异常信息,返回字符串。
printStackTrace()
• 获取异常类名和异常信息,以及异常出现在程序中的位 置。返回值void。
printStackTrace(PrintStream s)
• 通常用该方法将异常内容保存在日志文件中,以便查阅。
throws和throw

java类的继承实验总结

java类的继承实验总结
在Java中,类的继承是面向对象编程的重要特性之一。

通过继承,子类可以从父类继承属性和方法,从而实现代码复用和层次化设计。

在实验过程中,我深入学习了Java的继承机制,总结了以下几点经验:
1. 子类可以继承父类的非私有属性和方法,可以重写父类的方法。

在重写方法时,要遵循Liskov替换原则,确保子类可以替换掉父类。

2. Java中只支持单继承。

利用接口可以实现多重继承的效果。

3. super关键字可以访问父类的属性和方法,也可以调用父类的构造方法。

4. 父类的构造方法会被自动调用,如果没有显式地调用super(),则会默认调用父类的无参构造方法。

如果父类没有无参构造方法,则需在子类中显式调用super()并传入相应的参数。

5. 子类构造方法中的第一行可以调用super(),也可以调用this()。

但是二者不能同时出现。

6. 父类和子类的引用可以相互转换,但是只能通过向上转型实现。

在向上转型时,子类的特有属性和方法会被隐藏。

通过这次实验,我更深刻地理解了Java的继承机制,并掌握了其在面向对象设计中的重要作用。

在今后的Java开发中,我将充分利用继承的优势,编写出更加优雅和高效的代码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11.类,继承(向上转型)(1) 一般类
1. 定义和内容
2. 声明的基本格式
3. 类体(成员变量,方法)
4. 关闭输入/输出 (一般写在finally中)
(2) 继承
1. 向上转型
2. Super (访问父类)
3. This(指向当前对象或实例)
4. 构造方法(构造器)
1)类的定义和内容
定义:
a) 类是一类具有相同特征的事物的集合,是一个抽象的描述
b) 对象是类的具体化,是实际存在的事物
c) 类由类声明和类体构成,类体又由变量和方法构成。

内容:
a)属性:用来描述对象的固有的、静态的属性,称为成员变量。

b) 方法:对属性进行操作的行为或动作,称为成员方法
c) 成员变量和成员方法统称为成员,使用“对象.成员”来调用。

PS:在main函数里调用全局变量,必须先创建对象
2)声明的基本格式
public 说明符 class 类名 extends 父类名 implements 接口名;
注意:
(1) 访问说明符为public或者缺省。

public用来声明该类为公有类,可以被别的对象访问。

声明为公有的类存储的文件名为类名。

PS:在一个Java源程序中,只能有一个public修饰的类名!
(2) 类名:用户自定义的标识符,用来标志这个类的引用。

(3) 超类名:是指已经存在的类,可以是用户已经定义的,也可以是系统类。

(4) 接口名:即后面讲到的接口。

3)类体(成员变量,方法)
(1) 成员变量:指类的一些属性定义,标志类的静态特征,它的基本格式如下
访问说明符(public)数据类型(int)变量名(i)
其中:
●访问说明符有public、private和protected三种:
public:省略时默认为公有类型,可以由外部对象进行访问。

private:私有类型,只允许在类内部的方法中使用,若从外部访问,必须通过构造函数间接进行。

Protected:受保护类型,子类访问受到限制。

● 数据类型包括基本类型以及用户自定义的扩展类型。

(2) 方法:是类的操作定义,标志类的动态特征,它的基本格式如下:
●访问说明符数据类型方法名(数据类型1 变量名1, 数据类型2 变量名2)
其中:
●访问说明符为public、private和protected,其使用方法与成员变量访问说明符的使用方法一致。

●数据类型:包括基本数据类型和用户自定义的扩展类型。

●数据类型为参数。

(2)向上转型(向下)
1)extends 继承:从一个类扩展出一个新类,新类继承超类的成员变量和方法,并可以覆盖方法
1. 如果子类覆写了父类的方法,那么在对象调用中,就会覆盖父类原来的方法,而调用子类从
父类继承的方法。

2. 当创建子类对象-->(构造器),先调用父类构造!!注意这里是构造方法
注意这里是构造方法(默认情况下隐式调用父类的无参构造器),换句话说也就是在创建子类对象时系统会默认添加一个不带参数的父类构造方法super( ),后调用子类构造方法!(详见下面 c .super() 例图)
3. 父类引用可以指向子类对象:父类引用类型 = 子类对象(向上转型)。

如果使用向上转
型,子类自己生成的方法(不是从父类覆写的方法)会被去除,也不能再访问子类中定义的变量了。

(函数内调用的也是父类的方法!!)
2)Super 访问父类
1. super-->指向父类的方法和属性,this-->指向当前类的方法和属性
2. 子类不能访问父类的私有字段,可以通过父类的公用方法去访问
3. 子类同父类之间相互转换,实际是子类引用同父类引用转换.
4. 子类中字段名称同父类字段一致,虽合法但应避免这种用法,以免混淆
5. 子类中调用父类的构造方法,必须在子类的构造方法且第一行关键字super()调用
6. 子类定义的方法,同父类中方法一致(方法名,参数类型和个数,返回值),则覆盖父类方法,如果在
子类中要调用父类的方法,super.方法名()显式调用, 否则默认是子类方法this.方法名() 7. 父类与子类的继承关系中,子类的构造方法中有没有调用super()方法,都会自动调用系
统默认添加的不带参数的指向父类调用方法super( )。

8. 构造方法中传递相同数量的参数的时候,方法里面的参数类型不能完全一致。

相关文档
最新文档