Java--继承和super关键字

一、Java中方法的参数传递(重点)

Java中参数传递都是值传递

Java中的值分两种:
1、如果传递的参数是基本数据类型:  传递的值就是基本数据类型的值。
   传递的时候,其实是把基本数据类型的值,复制一份,传递到方法内部
2、如果传递的参数是引用数据类型:  传递的值是对象的地址值。
   把地址值复制一份传递给方法的参数。

二、面向对象特征2:继承

面向对象三大特征:1、封装 2、继承 3、多态

继承的语法: extends 被继承的类

继承的特点:
1、在继承的时候,被继承的类我们称之为父类或超类(superclass)、
   基类(base class)
2、继承别人的类,称之为子类。
3、继承的时候,子类可以继承父类的所有的非私有成员! 私有成员无法继承。
4、一个子类只能继承一个父类,不能同时继承多个父类。Java中的继承是单继承。
   (亲爹只有一个!!!)
5、一旦继承后,那么父类的非私有的成员,就成为了子类的成员。
6、子类继承父类之后,也可以继续添加自己的属性和方法。
   子类一般比父类具有更多的功能。
7、一个父类可以有多个子类。
8、java不支持多继承。   支持多重继承。b继承a, c可以继承b
9、子类不能继承父类的构造方法!

super关键字

1、super关键用在子类中,可以访问父类的指定的属性或方法。 相对this,this只能访问当前类的属性和方法。

注意:使用super的访问父类的属性和方法的时候,直接去父类中寻找,而不会在
      子类中寻找。使用this访问当前对象的属性和方法的时候,是先在当前类中
      寻找,如果当前找不到,再去父类中循环。

把super理解成一个父类的隐式的引用

2、在创建子类对象的时候,子类的构造方法如果没有显示的使用this(...)来调用 本类的其他构造方法。那么这个构造方法,一定会默认调用父类的无参构造方法。 可以使用super(实参)来显示的调用父类的指定的构造方法

注意:1、子类的构造方法既没有this(...),也没有super(...).则相当于
         这个构造方法的首行是super();
      2、使用super(...)调用父类的构造方法的时候,必须放在构造方法的首行。
      3、在同一个构造方法内部,不能同时使用this()和super()只能使用一个。

类中放的成员:
属性、方法、构造方法、构造代码块、静态代码块、静态方法。

创建子类对象。
父类静态代码块-->子类静态代码块-->父类的构造代码块-->父类构造方法-->子类构造代码块-->子类的构造方法

静态优先 --> 父类优先 --->构造代码块优先--->构造方法
关键字 属性 方法 构造方法 作为参数
this 当前属性 当前对象的方法 当前类的构造方法this() 作为参数传递
super 父类属性 父类的方法 访问父类的构造方法super() 不能作为参数

三、访问权限

修饰符 同一类 同一包 子类中(不同包) 任意地方
private yes      
default(默认) yes yes    
protected yes yes yes  
public yes yes yes yes
注意:
1、default有的时候,称之为包访问权限。只有同一个包中才可以访问。
2、这四个权限都是用在类的成员中的。只能用到属性和方法。
3、局部变量不允许添加权限修饰符。
4、defalut默认访问权限,不建议使用。任何时候都要选择相应的访问修饰符,
   不建议使用默认的。
5、在子类中使用protected的属性或方法的时候,只能通过super或this来访问。
   不能通过父类的对象来访问。

6、这四个访问权限,只能有两个可以用到外部类中。public、default。如果
   一个类是使用的public的权限,那么类名必须和文件名保证一致。

四、方法的覆写

当父类的方法的功能无法满足子类的需求,这个时候子类可以根据自己的业务 业务需求,在重新定义继承的那个方法。 方法的覆写(重写、override)

覆写的规则:
两同、两小、一大

两同:
    方法名相同、参数列表相同
两小:
    1、子类的返回值类型必须是父类的返回值类型的子类或者与父类相同。
        返回类型必须有子父类的关系。
    2、子类抛出的异常,与父类相同,或者是父类异常类型的子类。
一大:
    子类的方法的访问权限,不能比父类小。

五、继承中静态方法的特点

子类可以继承父类的静态方法,但是不能覆写父类的静态方法。


六、final关键字

final可以修饰类、变量、方法

1、final修饰类:表示这个类,不能有子类。不能被继承。太监类

2、final修饰方法:表示这个方法不能被子类覆写,可以被子类去继承。

3、final修饰变量:表示这个变量就成为常量!!!意思是说这个常量, 只能被赋值一次!!!

注意:
1、final修饰成员变量的时候,必须手动赋值,不能让虚拟机赋默认值。
2、形参也可以定义为final,但是这个时候不能再去手动赋值。他的值在调用方法的时候已经赋过值了。
3、final修饰变量之后,变成常量,命名的时候,所有字母大写,不同的单词之间用下划线_连接。

七、抽象类

用abstract修饰的类,就叫抽象类。

抽象方法:只有方法声明,没有方法体,用abstract修饰的的方法。

抽象类的特点:
1、抽象必须用abstract修饰。
2、抽象类中可以有普通有的所有成员,另外他可以有抽象方法。
3、抽象类不能直接创建对象!!!只能通过他的非抽象子类来创建对象。
4、抽象类的子类,必须实行抽象类的所有抽象方法。如果不能完全实行父类的抽象方法,则必须把这个子类也标记为抽象类。
5、抽象类可以没有抽象方法!但是,抽象方法必须放在抽象类中。
6、抽象类和抽象方法能不能用final修饰? 不能
7、抽象方法能不能是private的?  不能
8、抽象方法能不能是protected?  能
9、抽象方法能不能是static的?   不能

八、一战多态

Pet pet = new Dog();
两边类型不一致的情况,我们就称之为多态!
Pet pet:称之为编译时类型
    编译能否通过,看编译时类型。
    书写代码的时候,能不能编译通过,看编译时类型有没有相应的方法。

new Dog():称之为运行时类型
    运行的时候的具体结果,看运行时类型!

8.1 类型的转换

自动类型转换    自动类型提升、向上转换
    把子类类型的对象,赋值给父类的引用!
    Pet pet = new Dog(); //自动类型转换

强制类型转换
    把父类类型的对象,赋值给子类类型的时候,需要强制类型转换!
    能够强制类型转换,必须保证对象的实际类型,是要转换去的类型。

     instanceof  用这个去判断某个引用是不是属于某个类型
     用法:对象引用 instanceof 类
时间: 2024-11-06 14:14:02

Java--继承和super关键字的相关文章

Java中的super关键字

简单说一下Java中的super关键字. super关键字的用法源自于Java的三大特性之一的继承.也就是说有了继承,才有了super关键字. super的英文基本意思是"超".在Java中也是这么理解的,super代表的就是超类的意思.而我们习惯 上把超类叫做父类. super主要有两种用法. 一是:调用父类构造方法 二是:调用父类的属性和一般方法 下面简单的对两种用法进行介绍 =====================================================

面向对象编程(十)——继承之Super关键字及内存分析

阅读目录 Super关键字画内存分析图了解程序执行的整个过程 Super关键字 在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象.怎么去引用里面的父类对象呢?使用super来引用,this指的是当前对象的引用,super是当前对象里面的父对象的引用. super是直接父类对象的引用.可以通过super来访问父类中被子类覆盖的方法或属性. (注意和this的区别:this是当前对

java随笔:super关键字

super关键字 一.概念引入. 1.假如你在某个公司工作,这个公司中经理的待遇与普通员工的待遇存在一些差异.不过,他们之间也存在很多相同的地方,例如,他们都能领取薪水.只是普通员工在完成本职任务以后仅领取薪水,而经理在完成了预期的业绩之后还能领到奖金.下面用部分代码表示这段信息. 1 public class Manager extends Employee{ 2 //这里增加一个用于存储奖金信息的域,以及设置这个域的新方法 3 private double bonus; 4 public v

java基础:super关键字

  在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象.怎么去引用里面的父类对象呢?使用super来引用,this指的是当前对象的引用,super是当前对象里面的父对象的引用. 1.1.super关键字测试 1 package cn.galc.test; 2 3 /** 4 * 父类 5 * @author gacl 6 * 7 */ 8 class FatherClass {

【Object-C】继承,super关键字

Point: 1.Oc 中不支持多继承.动态调用. 2.派生类的数据成员不能和基类重名,若重名,系统将不会定义成功 3.基类的成员函数可以和基类的成员函数重名(作用相当于C++中的虚函数) 4.派生类中若要调用基类中的方法可以用[super  方法名]的方法. 5.Object-C 具有单继承的特点,每个子类只有一个直接的父类 6.子类可以继承到父类的全部成员方法和全部成员变量 7.大部分时候子类总是以父类为基础,扩展了新的方法和变量 8.子类包含与父类同名的现象被称为方法重写或者方法覆盖(ov

java基础之super关键字

一.在java里面,对于super关键字通常有两种用法: 1. 用在子类的构造方法里(初始化用),主要是调用父类的默认构造方法,如果父类有不止一个构造方法,可以通过super指定具体的构造函数,比如 super(paras): 2. 用在子类里调用隐藏或重写的属性或行为,比如 super.onDestroy()等等: 对于第1种需要注意,super表示当前类的父类,super()调用的是父类默认的构造方法,即这样可以对父类进行初始化.如何没有对父类进行初始化,当子类调用父类的方法时,便会从逻辑上

继承和super关键字

1.语法: @interface 子类名:父类名 2.继承好处:减少代码的重复性 3.继承的缺点:增加的代码的耦合性,即两个类的关系太紧,只要一个被毁另一个类就无法使用 4.注意点:a.oc中不允许子类和父类有同名的成员变量 b.方法可以在父类中声明,到子类去实现,也可以都有实现(即重写) c.父类必须声明在子类之前         d.子类调用方法时,会优先到自己的类中找该方法,若该方法不存在,那么就会到父类中寻找 5.重写:子类重写实现父类的方法(方法头相同,方法体不同) 6.继承调用方法原

Java 方法重写和 Super 关键字

方法重写 在 Java 继承中,也存在着重写的概念,其实就是子类定义了和父类同名的方法. 定义:方法名称相同,返回类型相同,参数也相同.代码如下: package hello; class Father01{ public void tell(){ System.out.println("父类调用方法"); } } class Son01 extends Father01{ public void tell(){ System.out.println("子类调用方法"

JavaSE复习日记 : 继承关系和super关键字

/* * 类的继承和super关键字 * * 软件开发的三大目的: * 可拓展性; * 可维护性; * 可重用性; * * 这里单说下可重用性这一项: * 为了代码复用,复用方式有: * 函数的调用复用; * 类的实例化复用,类直接的复用; * 类的继承复用; * 前两个我都有发过,这里就说一下类的继承,以及继承中用的较多的关键字:super; * * * 首先要先了解什么是继承? * 继承,用人认知的角度说的话就好比一个父亲的东西由他的几个儿子来继承,也就是有了父亲的东西,同时也有自己的东西-

Java中super关键字的作用与用法

Java中的super是什么?java中的super关键字是一个引用变量,用于引用父类对象.关键字“super”以继承的概念出现在类中.主要用于以下情况: 1.使用super与变量:当派生类和基类具有相同的数据成员时,会发生此情况.在这种情况下,JVM可能会模糊不清.我们可以使用以下代码片段更清楚地理解它: /* Base class vehicle */ class Vehicle { int maxSpeed = 120; } /* sub class Car extending vehic