super关键字
super(),表示在子类的构造方法中调用父类的构造方法(可以通过这种方法在子类的构造方法中初始化父类中的属
性),super()只能出现在构造方法的第一句上。super(),在子类的构造方中指明构造父类时调用哪一个父类的构造方法构造父类。
super,表示一个父类的对象,可以通过super来使用父类中可以访问的方法(可以在父类中定义setXxx(),getXxx()方法来访问父类中的私有属性),super可以屏蔽父子类中同名属性的命名冲突。
例:
public class Person{
……
private int age;
private String name;
public Person(){
}
public Person(String name){
this.name=name;
}
public void study(){
System.out.println(“学习”);
}
}
class Child extends Person{
private int age;//属性的遮盖
public Child(String name){
spuer(name);//调用父类的构造方法初始化父类的属性
}
public void study(){//覆盖了父类中的study()方法
System.out.println(spuer.getName()+“在小学学习”);
//super.getName()也就是调用了父类的访法
}
}
注意:构造方法的第一句既不是this(),也不是super()时,会隐含的调用其父类的无参的构造方法,即隐含的有super(),在写类的时候,一定要写无参的构造方法。
少覆盖原则:既子类应当尽量少的覆盖父类方法,如果覆盖了父类的大多数方法,那就应当考虑是否应当有继承关系
java中的多态(以子类覆盖了父类的方法为前提)
多态,把子类对象主观的看作是其父类型的对象,那么父类型就可以是很多种类型。
多态,编译时多态(方法的重载)
运行时多态(多态)
编译时类型,也就是可以被看作的类型,主观认定。
运行时类型,也就是实际的对象实例的类型,客观不可改变(也是被看作类型的子类型)
在对象产生时,运行时类型就已经确定不会改变,编译时类型可以和运行时类型不同。
对象引用声明并赋值后,就确定了其运行时类型。
编译时类型对象引用背后所指向运行时类型可以是其类型或者是其子类型。
多态三特性
1,对象实例确定则不可改变(客观不可改变)
2,只能调用编译时类型所定义的方法。
3,运行时会根据运行时类型去调用相应类型中定义的方法。
多态的意义:在需要使用一类对象的共性时,可以用多来屏蔽掉其子类中的差异。
注意:类的属性是没有多态的,会根据编译时类型访问。
子类覆盖了父类的方法,把子类对象实例赋值给父类类型的对象因用时才会有多态。
要注意区分子类中的方法重载。
对于方法的重载,会使用编译时类型来进行相应的方法调用。
instanceof,是用于判断一个对象是否属于某个类型
例
public class Animal{
……
public void eat(){
System.out.println(“eat something”);
}
public static void main(String[] args){
Animal a=new Dog();
Animal b=new Cat();
if(b instanceof Dog){
Dog d=(Dog)b
}
/*
Animal是编译时类型,并且是实际类型的父类,所以
多态优两个前提,父子类关系,还有方法的覆盖
*/
a.eat();
b.eat();
}
}
class Dog extends Animal{
public void eat(){
System.out.println(“eat bone”);
}
}
class Cat extends Animal{
public void eat(){
System.out.println(“eat fish”);
}
}
结果:
eat bone
eat fish
//这里之所以显示的是子类中方法结果,就是由于多态,根据其实际类型调用子类的方法
例:
两种代码复用
白箱复用,继承复用,父类中的可以被子类访问到的就可以被继承,会有些不需要的内容被继承,这种方式不太好。
黑箱复用,组合复用,把要复用代码的类的对象作为本类的属性,通过方法的委托来实现有选择的复用,方法的委托是在本类的方法内部通过该类的对象调用要使用的方法。
注意:尽量用组合复用替代继承复用。
例:
public class Car(){
……
}
class Benz{
Car c=new Car();
……
}
分享到:
相关推荐
接下来,了解Java的基础语法是关键。这包括: 1. **基本数据类型**:如整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。 2. **变量**:声明和初始化变量,理解其作用...
1. **Java简介**:Java是由Sun Microsystems开发的,后来被Oracle公司收购。它被设计成“一次编写,到处运行”,这意味着编写的代码可以在任何支持Java的平台上运行,无需重新编译。 2. **Java环境搭建**:学习如何...
* Java基础语法:了解Java的基本语法结构,包括变量、数据类型、运算符、控制流语句、方法等 * 流程控制和方法:了解Java的流程控制语句和方法的使用 * 数组:了解Java的数组数据类型和操作 * 面向对象编程:了解...
这里不仅有Java基础知识的详细介绍,还有高级特性的深入解析,是Java开发者深入了解Java内部机制的首选之地。 ### 2. CN-Java 网址:http://www.cn-java.com/ CN-Java是一个专注于Java技术的中文社区,提供了丰富...
* Java开发职业发展道路:了解Java开发职业的发展道路,如从初级开发到高级开发的发展过程。 * Java开发职业规划:了解Java开发职业的规划,如职业发展目标、职业发展方向等。 * Java开发职业技能:了解Java开发职业...
下面我们将详细探讨Java2Pas的工作原理、使用方法以及其在IT领域的应用。 首先,Java和Delphi是两种不同的编程语言,它们有着不同的语法结构和编程模型。Java是一种面向对象的语言,由Sun Microsystems(现已被...
通过阅读《Java核心编程思想》,读者不仅能全面掌握Java语言,还能了解到许多最佳实践和设计模式,从而在实际项目开发中游刃有余。这本书的2010最新版可能还包含了Java新特性的介绍,比如Java 7和8的Lambda表达式、...
Java 8快速入门教程为有一定Java基础的读者提供了一个指南,帮助他们快速了解并应用Java 8的新特性。无论你是想通过实践学习如何使用新的日期时间API,还是想掌握函数式编程的核心概念,本文都可以作为你的起点。...
在“Java 寝室版(六)”这个主题中,我们主要探讨的是关于Java编程语言在实际工作中的应用以及个人经验的理解。Java是一种广泛应用的面向对象的编程语言,以其跨平台性、稳定性和高效性而受到业界的广泛赞誉。在这...
对于初学者来说,这是了解Java API的起点。 2. **类和接口**:这是文档的主体部分,详细列出了Java平台提供的所有类和接口。每个条目都包含了类或接口的定义、构造方法、方法、常量等详细信息。例如,`java.lang....
3. 了解Java的新特性和最佳实践,跟进行业发展趋势。 4. 解决编程中遇到的问题,通过查找对应类或方法的详细解释来找到解决方案。 5. 阅读和理解其他人的代码,因为大多数Java代码都基于标准API。 总之,"JAVA帮助...
首先,我们需要了解Java数据库连接(JDBC)API,这是Java与数据库交互的标准接口。Java通过JDBC驱动程序与特定数据库通信。对于Sybase SQL Anywhere,我们需要的是对应的JDBC驱动,这里提供的`jconn3.jar`就是Sybase...
1. **Java语言概述**:了解Java的历史、特性以及其在软件开发中的应用。Java是由Sun Microsystems的詹姆斯·高斯林(James Gosling)在1995年创建的,现在由Oracle公司维护。它的主要特点包括平台无关性(Write Once...
帮助你快速了解java-Swing,附带程序图例,关键代码
1. **Java简介**:介绍Java的历史、特点以及其在软件开发中的应用领域。Java由Sun Microsystems的詹姆斯·高斯林(James Gosling)于1995年推出,其设计目标是“一次编写,到处运行”。 2. **环境搭建**:讲解如何...
本文档将带你从零开始,逐步了解Java编程的基础知识。 一、从面向过程编程到面向对象编程的思维转变 在面向过程编程中,程序设计侧重于过程的顺序执行,即通过一系列步骤处理数据。而面向对象编程(OOP)则以数据为...
了解Matomo Java Tracker有助于提升Java开发者在Web分析领域的专业技能,对于面试来说,可以展示对用户行为跟踪、数据分析以及如何将这些知识应用于实际项目的能力。以下是一些可能的面试问题: 1. 如何使用Matomo ...
在IT行业中,视频压缩是一项重要的技术,特别是在大数据和互联网传输领域。Java作为一种广泛使用的编程语言,也提供了多种方法来处理视频压缩。...对于想要深入这一领域的开发者来说,了解并实践这些技术是十分必要的。
实习单位简介:\n武汉达内科技有限公司是一家专注于IT培训的机构,与国际知名企业和教育机构有紧密合作,提供Java、C++、C#等高端软件人才培养。其教学模式创新,注重实践,为IBM、微软、华为等知名企业输送了大量...