`

JAVA-继承,重载,覆盖,private,sbstract

 
阅读更多

1.继承

syntax: class A extends B

子类可以继承父类的所有成员变量和方法

继承的作用

  • 通过继承可以简化类的定义
  • java只允许单继承,不允许多重继承
  • 可以有多层继承例如B继承A,C继承B, 那么C就间接继承了A
  • 子类继承了父类的所有变量和方法,但是不继承父类的构造方法。在子类的constructor中可以使用super()语句来调用父类的constructor。
  • 如果子类的构造方法中没有显式地调用父类的constructor ,也没有使用this关键字调用重载其它的构造方法,则在产生子类的实例对象时,系统默认调用父类的constructor。此时,如果父类中没有no-arg的constructor,将出现compile error。
  • super(...)和this(...)不能同时在一个构造函数中出现。
  • super(...)和this(...)调用语句只能作为构造函数的第一句出现。

class A

{

int i;

void display(){}

}

class B extens A

{

int j;

void show(){}

}

program1:

A a = new A(); B b = new B()
A aRef; B bRef;
aRef = a; aRef.i , aRef.display();
aRef = b; aRef.i , aRef.display(), aRef.j,aRef.show//compile error

aRef = b,可以这样理解,把子类当成父类用,父类里没有show(),所以编译出错,但是aRef 的类型已经变了,变成了B

program2:

A a = new A(); B b = new B()
A aRef; B bRef;
aRef = a; aRef.i , aRef.display();
aRef = b; aRef.i , aRef.display():

bRef = (B) aRef; bRef.j , bRef.show//compile and run

将父类强行转化成子类,但是现在父类引用的类型已经是B了,所以能这样。

program3:

A a = new A(); B b = new B()
A aRef; B bRef;
aRef = a; aRef.i , aRef.display();
bRef = (B) aRef; bRef.j , bRef.show//compile success but generate a runexception

将父类强行转化为子类,但是现在父类引用的类型还是A,所以编译成功但出现异常

2.重载和重写 overloading and overriding

overloading

  • java方法重载-具有相同的函数名,参数的个数或类型不同,这也是多态性的体现
  • 需要注意的是 重载的方法可以有返回值或没有,但是不能以函数的返回值类型来区分重载。

overriding

  • 子类和父类之间多态性的体现,当子类中定义了和父类中同名和同参数的方法时,父类中的方法就被重写,也成为覆盖。
  • 使用super()函数可以调用父类中的方法。

3.private关键字

当类中使用private关键字修饰变量或方法,则子类中不能对此变量进行修改,类的实例对象也不能修改。

4.抽象类 abstract

  • 抽象类必须用abstact 关键字来修饰,同理抽象方法。
  • 抽象类不能产生实例对象,也就是不能使用new关键字去产生对象
  • 抽象的方法只需声明不需要实现。
  • 含有抽象方法的类必须声明为抽象类,抽象类的子类必须覆盖了所有的抽象方法后才能被实例化,否则这个类还是一个抽象类。

abstract class A
{
public abstract String hello();
}
class B extends A
{
public String hello()
{
return "hello";
}
}
public class AbstactExample {

public static void main(String[] args) {
A a = new A();//compile error
B b = new B();
}

}

5.final关键字

  • final 标记的类不能被继承
  • final 标记的方法不能被重写/覆盖
  • final 标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。final标记的成员变量必须在声明的同时赋值,或在该类的构造方法中显式赋值。
  • 方法中定义的内置类只能访问该方法内的final类型的局部变量。
  • example:

public class FinalExample {
static final int i = 10;
static short s;

public static void main(String[] args) {

s = i;
System.out.println(s);
System.out.println(i);
}

}

output:

10
10

public class FinalExample {
static int i = 10;
static short s;

public static void main(String[] args) {

s = i;//compile error
System.out.println(s);
System.out.println(i);
}

}

分享到:
评论

相关推荐

    java-数组与方法及面向对象基础

    在Java中,通过类(class)来定义对象的结构和行为,使用访问修饰符(如public、private)控制成员的访问权限。 2. **继承**:子类继承父类的属性和方法,允许创建更复杂的类层次结构。使用`extends`关键字实现继承...

    java学习笔记 继承 重载 覆盖

    Java编程语言的学习涉及众多核心概念,本篇笔记主要探讨了几个关键知识点:继承、重载和覆盖。首先,我们从Java环境配置开始,确保能够正确地运行Java程序。在Windows系统中,需要设置环境变量PATH,指向JDK安装目录...

    跟我学Java-day09-方法重载、Debug调试.pdf

    day09-方法重载、Debug调试 1. 方法重载 1.1 方法重载(理解) 方法重载概念 方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载 多个方法在同一个类中 多个方法具有相同的...

    Java方法继承、方法重载、方法覆盖总结

    ### Java方法继承、方法重载、方法覆盖总结 在Java编程语言中,方法继承、方法重载、方法覆盖是三个非常重要的概念。它们之间既有关联又有区别,掌握这些概念对于深入理解面向对象编程有着至关重要的作用。 #### ...

    Java 实例 - 方法重载演示源代码-详细教程.zip

    Java 方法重载是面向对象编程中的一个重要概念,它允许在一个类中定义多个具有相同名称但参数列表不同的方法。这个概念在Java编程中被广泛应用,因为它提供了代码的复用性和灵活性。下面将详细介绍Java方法重载及其...

    java程序设计-第5章-继承、多态、重载与接口

    Java程序设计中的继承、多态、重载与接口是面向对象编程的重要概念,它们构成了Java类体系的基础。让我们深入探讨一下这些主题。 1. **继承(Inheritance)** 继承是Java中一个核心特性,它允许一个类(子类)继承...

    java中函数重载与覆盖例子

    在Java编程语言中,函数重载(Overloading)和覆盖(Overriding)是面向对象特性的重要组成部分,它们分别处理多态性中的静态多态和动态多态。本篇将通过一个具体的例子,深入探讨这两个概念。 函数重载是指在同一...

    HCIP-Big Data培训视频教程【共43集】.rar

    21 java-重载 22 java-访问修饰符 23 java-继承 24 java-初识java和数据类型 25 java-多态集合 26 java-异常处理 27-29 大数据离线批量场景化解决方案 30-34 大数据实时检索场景化解决方案 35-37 大数据实时流...

    Java语言中的 覆盖重载和多态

    Java语言中的覆盖(Override)和重载(Overload)以及多态(Polymorphism)是面向对象编程的重要概念,它们是实现代码复用和灵活性的关键。 **多态性(Polymorphism)** 多态性是Java中一种允许一个接口有多种实现的方式。...

    《java面向对象程序设计-继承和多态》教案.doc

    面向对象编程是Java的核心特性,本教程主要涵盖了三个关键概念:封装、继承和多态,以及相关的访问修饰符和方法修饰符。 封装是面向对象编程的基础,它涉及到将数据(属性)和操作这些数据的方法(行为)组合在一个...

    大学Java-Java-JAVA试卷12.doc

    本资源总结了 Java 试卷 12 的知识点,涵盖了 Java 语言的基础知识点,包括变量、数据类型、运算符、控制流程、方法、类和对象、继承、多态、接口、异常处理等方面。 一、变量和数据类型 * 变量的声明和赋值 * ...

    [Java]重载,重写以及继承,多态的区

    在Java编程语言中,重载、重写、继承与多态是四个非常核心的概念,它们在面向对象编程中扮演着至关重要的角色。接下来,我们将详细探讨这些概念,并通过实例加以说明。 ### 重载(Overload) 重载是指在同一个类中...

    java入门基础-继承及多态

    ### Java入门基础:继承及多态 #### 一、继承 继承是面向对象编程(OOP)的一个核心概念,它允许创建一个新类(称为子类或派生类),该类继承了现有类(称为父类或基类)的特征。在Java中,一个类可以从另一个类继承...

    Java 中方法的重载与覆盖

    ### Java中的方法重载(Overloading)与方法覆盖(Overriding) #### 方法的重载(Overloading) 在Java中,方法重载允许我们定义多个同名的方法,但这些方法之间必须具备不同的特征来区分它们。这有助于提高代码的...

    java23.7.12-继承抽象多态

    在Java编程语言中,继承、抽象和多态是面向对象编程的三大核心概念,它们构成了Java类层次结构的基础,使得代码更加灵活、可扩展且易于维护。以下是对这些概念的详细解释: ### 继承(Inheritance) 继承是Java中...

    Java方法继承、方法重载、方法覆盖小结.doc

    Java 方法继承、方法重载、方法覆盖、小结 Java 编程语言中,方法继承、方法重载、方法覆盖是三个重要的概念,它们在软件开发中发挥着重要作用。 方法继承 方法继承是 Java 编程语言的一种机制,允许一个类继承另...

    Java-J2SE学习笔记

    - **多态**:同一消息可以有多种不同的响应,体现在方法重载和覆盖上。 3. **异常处理**: - **异常类层次**:Java将错误分为Error和Exception,异常处理通过try-catch-finally语句块进行。 4. **集合框架**: ...

    java基础继承封装多态

    在 Java 中,封装可以通过使用访问修饰符来实现,如 `public`、`private` 和 `protected`。这些修饰符可以控制访问权限,以保护数据和方法不被外部访问。 多态 多态是 Java 中的一种机制,允许一个对象引用多种...

    JAVA题库习题及答案--.doc

    Application是独立运行的程序,它们有自己的main()方法,可以单独启动,而Applet是嵌入到网页中的小程序,通常在Web浏览器中运行,并需要继承Java的Applet类。 在Java中,类是最基本的元素,每个类在编译后都会生成...

    java-c语法7---method-overload---马克-to-win java视频

    java语法 method overload 马克-to-win java视频 方法 重载

Global site tag (gtag.js) - Google Analytics