继承笔记

用关键字extends来表示一个类继承了 另一个类

public class Sub extends Base1{

。。。。

}

如果Sub和Baes1类位于同一个包中:

sub继承base类中的public,protectd和默认访问级别的成员变量和成员方法。

----------------------不在同一个包中:

~~~~~~~~~~~~~~不会继承默认访问级别的成员变量和成员方法。

Java中不支持多继承。只允许一个类直接继承一个类。但是他可以有很多的间接父类。

class Base1 extends Base2{}

class Sub extends Base1{}

JAVA所有的类都继承java.lang.Object类

方法重载Overload

对于类的方法(包括从父类中继承的方法)

方法名相同--方法的参数类型、个数、顺序至少有一项不相同。就叫做方法的重载。

另外俩个必须满足的条件,1-方法的返回类型可以不同 2-方法的修饰符可以不同。

在关键字abstract方面,不是抽象类,不能包含抽象方法。

方法的覆盖Override

为了提高代码的可重用性,父类的方法应适用于大多数的子类的实现,这样就可以避免子类中重复定义相似方法,

但是一小部分的子类在这个方法与父类实现方式不一样,这个类就必须重新定义。

(1)子类的方法名,参数签名和返回类型必须一致。

(2)子类方法不能缩小父类方法的访问权限。如,父类public,子类就不能是private

(3)子类不能抛出比父类更多的异常。

要么子类方法抛出的异常和父类的相同,要么多抛出的异常是父类方法抛出的异常的子类。

(4)方法覆盖只能在子类和父类间,同一个类中只能重载

(5)父类的静态方法不能被子类覆盖为非静态方法。

父类的非静态方法不能被子类覆盖为静态方法。

父类的私有方法不能被子类覆盖。

(6)子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法。

隐藏父类的静态方法和子类覆盖父类的实例方法:

Java虚拟机讲静态方法和所属的类绑定,而把实例方法和所属的实例绑定。

(7)父类的私有方法不能被子类覆盖 。

(8)父类的抽象方法被子类覆盖 有两种途径:

一、子类实现父类的抽象方法

二、子类重新声明父类的抽象方法。

public abstract class base{

abstract void method1(){};

abstract void method2(){};

}

public abstract class sub extends base()

{

public void method1(){}//实现method1方法, 并扩大访问权限。

public abstract void method2(){};//重新声明method2方法,仅仅扩大访问权限,不 实现。

}

(9)父类的非抽象方法可以被覆盖为抽象方法.

总结的不完善,希望大家能多给点意见。

时间: 2024-10-11 13:05:25

继承笔记的相关文章

Java 第十二章 继承 笔记

Java 第十二章  继承 笔记 一.使用继承:     1)方便修改代码     2)减少代码量 二.super 继承object 类:super 访问父类的无参构造:super 指的是object 的无参构造.     例:子类调用父类:super.属性 / super.方法    注意:子类不能继承父类私有属性:得用set.get方法来调用:    super只能写在代码块的第一句:super只能调用非私有的方法:    super只能出现在子类的方法和构造方法中. 三.不能被继承的父类成

javascript继承笔记----1024

惊涛随笔 javascript继承笔记 //原型(prototype):原型是一个对象,其他对象可以通过它实现属性继承 /*笔记:* 1.类式继承:通过原型链继承的方式 * 2.原型式继承:对类式继承的封装 * 3.寄生式继承:对原型继承的二次封装,并且在第二次封装过程中对继承的对象进行扩展 * 4.构造函数式继承:通过构造函数继承的方式 * 5.组合式继承(类式继承+构造函数式继承 两者优点相加过滤缺点) * 6.寄生组合式继承:寄生式继承融合构造函数式继承的优点去除缺点的方式*/ //原型式

javascript继承笔记

//原型(prototype):原型是一个对象,其他对象可以通过它实现属性继承 /*笔记: * 1.类式继承:通过原型链继承的方式 * 2.原型式继承:对类式继承的封装 * 3.寄生式继承:对原型继承的二次封装,并且在第二次封装过程中对继承的对象进行扩展 * 4.构造函数式继承:通过构造函数继承的方式 * 5.寄生组合式继承:寄生式继承融合构造函数式继承的优点去除缺点的方式 * 6.组合式继承(类式继承+构造函数式继承 两者优点相加) */ //原型式继承 function inheritobj

maven聚合与继承笔记

maven聚合 聚合的目的是为了快速构建项目,当我们有几个maven模块,想要一次性构建,而不是到每个模块下面去执行maven命令,这时候就需要使用maven聚合(或者称为多模块). 使用聚合的时候,我们需要新建一个maven项目,由它来控制构建其他的项目,其pom.xml配置与其他普通maven项目的区别主要在以下两个地方: 打包类型(packaging)必须为pom 需要在其中添加modules标签,在其中使用module标签包括需要同时构建的maven模块的名称路径,路径为相对于此pom.

《C++ Primer Plus》第13章 类继承 笔记

类继承通过使用已有的类(基类)定义新的来(派生类),使得能够根据需要修改编程代码.共有继承建立is-a关系,这意味着派生类对象也应该是某种基类对象.作为is-a模型的一部分,派生类继承基类的数据称源和大部分方法,但不继承基类的构造函数.析构函数和赋值运算符.派生类可以直接访问基类的公有成员和保护成员,并能够通过基类的共有方法和保护方法访问基类的私有成员.可以在派生类中新增数据成员和方法,还可以将派生类用作基类,来做进一步的开发.每个派生类都必须有自己的构造函数.程序创建派生类对象时,将首先调用基

【原生js】js面向对象三大特征之继承笔记

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 7 </head> 8 <script> 9 //中学生 10 function MidStu(name,age){ 11 this.name=name; 12 this.ag

javascript 关于new()继承笔记

近期的一些学习总结,如有错误不严谨地方,希望指出! 使用new操作符会有如下操作: 1.创建一个对象temp = {}, 2. temp.__proto__ = A.prototype, 3. A.call(temp, arguments), 4. return temp. function a(name){ this.name="a"; } function b(name){ this.name="b"; } a.prototype.show=function()

关于JS的原型与继承笔记

1.什么是原型? 原型就是公用的方法或者属性. 1.prototype本质上还是一个JavaScript对象: 2.每个函数都有一个默认的属性prototype,而这个prototype的constructor默认指向这个函数 3.通过prototype我们可以扩展Javascript的内建对象: 原型的属性和方法是被共享的 只要原型上的属性或者方法被改了, 实例上的也会发生改变; 2.prototype与constructor 其实在JS中构造器就是函数,函数就是构造器,对象实例就是通过var

Java 异常处理

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error:如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常. 异常发生的原因有很多,通常包含以下几大类: 用户输入了非法数据. 要打开的文件不存在. 网络通信时连接中断,或者JVM内存溢出. 这些异常有的是因为用户错误引起,