修饰符:
访问范围 子类是否能继承 | 严
|
private 本类内部访问 不能继承 |
|
(default) 本类+同包 不一定,要看子类和父类是否同包 |
|
protected 本类+同包+不同包子类 子类能继承 |
|
public 公开 能继承 | 宽
方法重载不仅仅发生在本类中,也会发生在父子类之间。
java中方法的覆盖-----父子类之间 (课堂代码:TestInheritance.java)
1)方法名相同,参数表相同,返回值相同
2)子类的修饰符要比父类的修饰符相同或更宽
3)父类若是私有的,子类就没有继承,若都有相同方法不属覆盖
子类中有和父类中可访问(可继承到子类)的同名同返回类型同参数表的方法,就会覆盖从父类继承来的方法。
在父子类中,出现方法名相同,参数表不同的情况,叫方法的重载
方法覆盖父子类返回值类型也要相同
注意:在jdk1.4以前要求方法的覆盖时,需要方法的返回值,参数表,方法名必须严格相同,
而在jdk1.5中方法覆盖,子类的中覆盖的方法的返回值可以是父类中被覆盖的方法的返回值类型的子类型。
注意:子类的方法覆盖父类的方法时,方法的修饰符要么相同,要么子类中的方法的修饰符表示的访问权限要宽于父类。
父类中的私有方法,不能被继承到子类,就是说子类中即使将其覆盖了也不会有多态。
注意:父子类中有同名的属性不叫子类覆盖了父类的属性,这种情况叫作属性的遮盖(shadow)。
super关键字
(1)区分父子类间的属性遮盖和方法覆盖,用来区分被子类遮盖的实例变量和被子类覆盖的方法,父子类之间的属性相同时会形成遮盖
(2)super(),表示在子类的构造方法中调用父类的构造方法(可以通过这种方法在子类的构造方法中初始化父类中的属性),
super()也只能出现在构造方法的第一句上。super(),在子类的构造方中指明构造父类时调用哪一个父类的构造方法构造父类。
super,这里所表示的是一个父类的对象,可以通过super来使用父类中可以访问的方法(可以在父类中定义setXxx(),getXxx()方法来访问父类中的私有属性), super可以屏蔽父子类中同名属性的冲突。
注意:在写类的时候,一定要写默认无参的构造方法,如果一个构造方法的第一句既不是this(),也不是super()时,
那么就会在这里隐含的调用他的父类的无参的构造方法,即隐含的有super()。
protected修饰符 :(课堂代码:Chenzq.java,Huxz.java)
java.lang包里的Object类是java中所有类的父类
构造对象的过程:1)分配空间
2)递归的构造父类对象
3)初始化属性
4)调用构造方法
构造方法不能继承,构造子类对象时总是调用父类的无参的构造方法
构造子类对象时会自动的调用默认的无参的父类的构造方法。
CARP 组合/继承 复用原则-------只会复用我们想复用的方法
用组合的方式去取代继承的方式
java中的多态 --- 运行时多态
Animal a = new Dog(); //Animal是编译时类型,Dog是运行时类型。运行时类型得是编译时类型的子类
引用类型 对象类型
主观类型 客观类型
以子类覆盖了父类的方法为前提
1)运行时类型不变
2)只能对一个引用调用其编译时类型中定义的方法
3)运行时会根据对象的运行时类型找覆盖之后的方法
Animal a = new Dog();
Dog d = new Dog();
a = d; //把子类引用赋值给父类引用,是合法的
d = (Dog)a; //把父类引用赋值给自类引用,需要强转
父类的引用赋值给子类的引用需要强制类型转换,而子类的引用赋值给父类的引用不需要强制类型转换
instanceof的用法: 引用 instanceof 类名----判断该引用所指向的对象和后面的这个类是否兼容,用在强制类型转换之前。
a instanceof Dag; //a指向的对象是不是Dog类
一般用在强制类型转换之前,避免转换异常
多态的用途:可以把不同子类的对象统一当做父类对象来看,屏蔽不同子类的差异
多态可以使代码变得更通用,以适应需求的变化。也就是定义在父类中的方法,可以在子类中有不同的实现将其覆盖,
在为父类型的对象变量赋值相应需要功能的子类的对象实例。
分享到:
相关推荐
### CoreJava学习笔记 #### 一、JAVA特点与运行原理 **JAVA特点:** 1. **简单性**:Java的设计者们将C++语言中许多不易理解和容易混淆的部分去除,使得Java更容易理解与掌握。 2. **面向对象**:Java几乎一切都...
Java是世界上最流行的编程语言之一,...以上就是“达内Core Java学习笔记”中涉及的主要知识点。通过深入学习和实践,初学者可以逐步建立起坚实的Java编程基础,并为进一步学习Java的高级特性和框架打下坚实的基础。
Java是一种广泛使用的面向对象的编程语言,其基础知识构成了"Core Java"的学习内容。在学习Java时,遵循"多花时间、多动手、多问题"的原则至关重要,因为理论理解与实践操作相结合能更好地掌握知识。 1. **Java语法...
### Java学习笔记及心得知识点详细解析 #### 标题:Java学习笔记及心得 #### 描述:Core Java 学习笔记及心得 pdf格式可打开。涵盖了java的基础入门知识,非常适合自学的及想深入学习理解的同学。 #### 标签:...
《Core Java》学习笔记。 我把自己的笔记都以注释的形式写在代码里面了,这样方便理解。 尽管有些部分被标记为“已完成”,但实际上以后说不定我还会折返回来进行修改或者添加一些注释。 当然如果你有什么不理解...
Java是一种由Sun Microsystems在1995年推出的高级编程语言,现由Oracle公司维护。...以上就是Core Java学习笔记的主要内容概述,涵盖了从基础语法到高级特性的广泛知识,为深入理解和应用Java打下了坚实的基础。
这篇学习笔记主要讨论了Java集合框架,包括Collection、List、Set和Map四大接口以及它们的相关方法。 首先,Collection是所有集合类的顶级接口,它定义了一些基本的操作,如添加元素(add)、获取元素数量(size)、...
【Java学习笔记全套】是针对Java编程语言的一套全面学习资料,涵盖了Unix操作系统基础、SQL数据库操作、核心Java编程、Hibernate持久化框架、以及Spring框架等多个关键知识点。这些笔记旨在帮助初学者系统地掌握Java...
《CoreJava学习笔记》 Java,作为一种广泛使用的高级编程语言,以其独特的特性和优势深受开发者喜爱。本学习笔记旨在深入浅出地介绍Java的核心概念,帮助初学者快速掌握这一强大的工具。 1. Java特点 Java语法...
在Java编程语言中,SortedSet接口是Set接口的一个子接口,它添加了对集合元素排序的能力。SortedSet接口要求其实现类必须维护元素的排序顺序,这种顺序可以是元素的自然顺序(即元素自身可比较),也可以是通过提供...
### 达内COREJAVA学习笔记知识点详述 #### 一、Java版本与平台概述 - **J2SE**: Java Standard Edition,即Java标准版,针对桌面应用开发。 - **JAVA SE**: 指的是Java SE 5.0,发布于2004年,增加了泛型、枚举等...
(二)面向对象技术总结.pdf (三)corejava高级特性总结 (四)接口学习总结 (五)异常和内部类 (六)集合框架学习总结 (七)GUI和AWT事件模型 (八)多线程学习总结 (九)输入输出流学习总结 (十)网络编程学习总结
CoreJava_day11的学习笔记主要涵盖了集合框架,特别是关于List、Set和Map接口,以及ArrayList、Vector和LinkedList等具体实现类的知识点。 首先,集合框架是用来存放对象的对象,它提供了一组接口和类,使得我们...
在Java编程语言中,继承是面向对象编程的一个关键特性,它允许子类继承父类的属性和方法,从而实现代码的复用和扩展。在Java中,类的继承是单继承的,即一个子类只能有一个直接父类,但可以通过接口实现多继承的效果...
这份"java学习笔记(corejava)部分.rar"文件很显然是针对Java初学者或者希望巩固基础知识的开发者准备的。下面我们将深入探讨Java Core的一些关键知识点。 1. **Java基础**:Java是一种面向对象的编程语言,其设计...
java学习笔记 简介: java 学习笔记。 我把自己的笔记都以注释的形式写在代码里面了,这样方便理解。 尽管有些部分被标记为“已完成”,但实际上以后说不定我还会折返回来进行修改或者添加一些注释。 当然如果你...
自己学习corejava核心技术卷一时的学习笔记和心得,提出的一些问题