java学习笔记之11-类,继承(向上转型)
- 格式:pdf
- 大小:644.01 KB
- 文档页数:6
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调用父类构造方法的代码应该在子类构造方法的首行,并且只能出现一回.。
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多态、向上转型、向下转型知识分享(讲解全⾯)多态(⽅法的多态、对象的多态)⽅法的多态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;//属性}向下转型⼦类对象引⽤名 = (⼦类类型)⽗类引⽤只能强转⽗类的引⽤,不能强转⽗类的对象,所以必须先向上转型,才能向下转,因为得先向上转得到⽗类的引⽤可以调⽤⼦类的所有成员,(向下转型可以得到⼦类的特有⽅法)总结:访问属性看编译类型,编译类型是谁就访问谁访问⽅法看运⾏类型,运⾏类型是谁就访问谁。
面向对象今日内容介绍◆继承◆抽象类第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语言中,可以通过使用关键字“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对象的向上转型与向下转型
向上转型
对象的向上转型,其实就是多态的写法:
⽗类名称对象名 = new ⼦类名称();
含义:创建⼀个⼦类对象,把它当做⽗类来看待使⽤。
Animal niki = new Cat();
注意:向上转型⼀定是安全的。
从⼩范围转向⼤范围。
(有点类似于⾃动类型转换...)
对象⼀旦向上转型为⽗类,那么就⽆法调⽤⼦类原本特有的内容。
向下转型
向下转型其实是⼀个【还原】的动作。
格式:
⼦类名称对象名 = (⼦类名称) ⽗类对象;
含义:
将⽗类对象,【还原】成为本来的⼦类对象。
注意事项:
1. 必须保证对象本来创建的时候,就是这个品种,才能向下转型成为这个品种。
2. 如果对象创建的时候不是这个品种,现在⾮要向下转型成为这个品种,就会报错。
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类的继承实验总结
在Java中,类的继承是面向对象编程的重要特性之一。
通过继承,子类可以从父类继承属性和方法,从而实现代码复用和层次化设计。
在实验过程中,我深入学习了Java的继承机制,总结了以下几点经验:
1. 子类可以继承父类的非私有属性和方法,可以重写父类的方法。
在重写方法时,要遵循Liskov替换原则,确保子类可以替换掉父类。
2. Java中只支持单继承。
利用接口可以实现多重继承的效果。
3. super关键字可以访问父类的属性和方法,也可以调用父类的构造方法。
4. 父类的构造方法会被自动调用,如果没有显式地调用super(),则会默认调用父类的无参构造方法。
如果父类没有无参构造方法,则需在子类中显式调用super()并传入相应的参数。
5. 子类构造方法中的第一行可以调用super(),也可以调用this()。
但是二者不能同时出现。
6. 父类和子类的引用可以相互转换,但是只能通过向上转型实现。
在向上转型时,子类的特有属性和方法会被隐藏。
通过这次实验,我更深刻地理解了Java的继承机制,并掌握了其在面向对象设计中的重要作用。
在今后的Java开发中,我将充分利用继承的优势,编写出更加优雅和高效的代码。
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. 构造方法中传递相同数量的参数的时候,方法里面的参数类型不能完全一致。