Java核心:继承

继承的本质:复用已存在的方法和域

一、概念:

继承是java面向对象编程的基石,继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。


public class Person {
	
	public void run() {
		System.out.println("任何人都可以跑。。。");
	}
}

class Student extends Person{
	
	private void eat() {
		System.out.println("学生正在吃。。。。");
	}
	
	public static void main(String[] args) {
		Student student = new Student();
		student.run();
		student.eat();
	}
	
}

由以上代码我们可以看出:关键字extends表明正在构造的新类Student派生于一个已经存在的类Person,已存在的类称为超类或者父类;子类称为子类。我们还可以看出子类可以调用父类的方法,而且子类可以拥有自己的方法,功能比超类更丰富

(子类可以调用父类的方法,但是父类不能调用子类的方法)

二、明确方法重载和方法重写

1.方法重载


 

 方法重载:在一个类里面出现多个方法名字相同,参数不同便会产生方法重载。

    public void method() {
		System.out.println("1");
	}
	public void method(String a) {
		System.out.println("1");
	}
	public void method(int a) {
		System.out.println("1");
	}
	public void method(int a,int b) {
		System.out.println("1");
	}

方法重写:在有些时候,子类当中需要调用父类当中的方法,但是父类当中的方法对子类来说并不一定适用。这个时候我们就需要使用到方法的覆盖。在子类中重写父类方法

//父类
public class Person {
	public void run() {
		System.out.println("任何人都可以跑。。。");
	}
}
//子类
public class Student extends Person {
	public void run() {
		System.out.println("学生都可以跑");
	}
}

我们可以看到子类和父类当中都有run方法,而我们实际调用的却是子类自己的run方法,这就是方法的覆盖,子类通过重写和父类一样的方法实现方法的覆盖。

2.方法覆盖

在有些时候,子类当中需要调用父类当中的方法,但是父类当中的方法对子类来说并不一定适用。这个时候我们就需要使用到方法的覆盖。

//方法的覆盖
	//子类和父类当中都有相同的方法,
	//子类通过重写父类方法实现方法的覆盖
	public void getRun() {
		System.out.println("所有小猫杜能跑。。。。");
	}
	
	//一个方法的签名是由方法名称以及参数列表所组成
	//方法的重载是指在一个类当中有相同的方法名不同的参数列表
	public void getRun(int s) {
		System.out.println("所有小猫杜能跑。。。。"+s);
	}
	
	public static void main(String[] args) {
		Cat cat = new Cat();
		cat.getRun();
	}

三、super关键字

super 关键字有两个用途:一是调用超类的方法,二是调用超类的构造器。调用构造器语句的时候只能作为另一个构造器的第一条语句出现。

四、继承层次

java只支持单继承


继承并不限于一个层次。

public class Person {
	
	public void run() {
		System.out.println("任何人都可以跑。。。");
	}
	
}

class Student extends Person{
	public void run() {
		super.run();
		System.out.println("这个学生在跑。。。");
	}
	
	private void eat() {
		System.out.println("学生正在吃。。。。");
	}
	
	public static void main(String[] args) {
		Student student = new Student();
		student.run();
		student.eat();
	}
	
}

class XiaoMing extends Student{

}
class XiaoHong extends Student{
	
}


由一个公共超类派生出来的所有类的集合被称为继承层次,在继承层次当中,从某个特定的类到其祖先的路径被称为继承链,但是一定要注意java是单继承的。

五、类的加载顺序

public class Test extends Base{ 
    static{
        System.out.println("test static");
    }
    public Test(){
        System.out.println("test constructor");
    }
    public static void main(String[] args) {
        new Test();
    }
}
class Base{
     
    static{
        System.out.println("base static");
    } 
    public Base(){
        System.out.println("base constructor");
    }
}
/*
base static
test static
base constructor
test constructor*/

先来想一下这段代码具体的执行过程,在执行开始,先要寻找到main方法,因为main方法是程序的入口,但是在执行main方法之前,必须先加载Test类,而在加载Test类的时候发现Test类继承自Base类,因此会转去先加载Base类,在加载Base类的时候,发现有static块,便执行了static块。在Base类加载完成之后,便继续加载Test类,然后发现Test类中也有static块,便执行static块。在加载完所需的类之后,便开始执行main方法。在main方法中执行new Test()的时候会先调用父类的构造器,然后再调用自身的构造器。因此,便出现了上面的输出结果。

public class Demo {
    public Demo(String aa){
        System.out.println("===="+aa);
    }
 
    static {
        System.out.println("11");
    }
 
    public static Demo demo = new Demo("+++");
 
    static {
        System.out.println("22");
    }
 
}
 
class Test{
    public static void main(String[] args) {
        Demo demo = new Demo("----");
    }
}
/*
11
====+++
22
====----
*/

所有的静态的类的初始化都交给类的第一个对象去执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Java核心技术:卷1 基础知识》是一本关于Java编程语言基础知识的电子书。Java是一种通用的、面向对象的编程语言,它被广泛应用于跨平台的应用软件开发。这本书帮助读者建立起Java编程的基础,并深入了解Java核心技术。 这本电子书的内容主要涵盖了Java语言的基础知识,包括Java的数据类型、操作符、控制结构等基本概念。读者可以通过学习这些基础知识来了解Java语言的基本语法和编程规范,并学会如何编写简单的Java程序。 另外,这本电子书还介绍了Java的面向对象编程思想和相关的概念,如类、对象、封装、继承和多态等。通过学习这些内容,读者可以理解Java的面向对象编程模型,并学会如何在Java中设计和使用类、对象和接口等。 此外,这本书还涉及了Java的输入输出、异常处理、线程和并发编程、集合框架等内容,帮助读者理解和应用Java中常用的编程技术和工具。 总而言之,《Java核心技术:卷1 基础知识》是一本适合初学者学习Java语言的电子书,通过阅读这本书,读者可以建立起Java编程的基础,并且能够进一步学习和应用Java的高级技术和框架。这本书详细介绍了Java的基础知识,并提供了丰富的示例和练习,帮助读者巩固所学的知识。无论是想要学习Java编程的初学者,还是想要进一步提升Java编程技能的程序员,这本电子书都是一个不错的选择。 ### 回答2: 《Java核心技术: 卷1 基础知识》是一本非常重要的Java编程指南,几乎涵盖了Java编程的基础知识。 该书首先介绍了Java语言核心特性,如数据类型、运算符、控制流程等。它详细解释了每个概念,并给出了示例代码,帮助读者更好地理解和应用这些概念。 接下来,该书详细介绍了面向对象编程。它涵盖了类和对象的概念,封装、继承和多态的原则,以及如何在Java中利用这些概念来编写可重用和灵活的代码。 该书还深入讨论了Java中最重要的概念之一:异常处理。它介绍了异常处理的原则和机制,并提供了如何编写健壮的代码以处理异常情况的实用技巧。 此外,该书还讨论了Java标准库的使用,包括输入输出、集合框架、多线程和网络编程等方面。它解释了这些库的基本原则和使用方法,并举例说明了如何利用它们来解决实际问题。 总的来说,《Java核心技术: 卷1 基础知识》是一本全面而且详细的Java编程指南。它适用于初学者和有一定经验的开发人员,提供了大量的示例代码和实用技巧,可以帮助读者建立坚实的Java编程基础,并提高他们的编码能力和效率。无论是想从零开始学习Java编程,还是需要深入了解Java核心知识,这本书都是一个非常有价值的资源。 ### 回答3: 《Java核心技术:卷1 基础知识》是一本讲述Java编程语言基础知识的图书,是学习Java语言的重要参考书籍。该书主要涵盖了Java语言的基本概念、语法、面向对象编程等内容,是学习Java语言入门的良好选择。 该书的电子版为电子书的形式,可以通过互联网下载和阅读。电子版可以在计算机、平板电脑、手机等设备上进行阅读,非常方便实用。 《Java核心技术:卷1 基础知识》电子版的优点包括便携性、灵活性和交互性。由于电子版可以随时随地进行阅读,学习者可以在自己方便的时间和地点进行学习。同时,电子版还可以进行搜索、书签标记等操作,方便学习者进行查找和复习。 该书的内容涉及Java语言的基本语法、控制流、数组、字符串、面向对象编程、异常处理、输入输出流等重要概念和技术。这些内容对于Java初学者来说都是非常重要的基础知识,通过学习这些内容可以帮助学习者掌握Java编程语言的基本特性和技术,并为后续学习Java开发框架、高级技术奠定基础。 综上所述,《Java核心技术:卷1 基础知识》电子版是一本非常好的Java学习资料,可以帮助学习者掌握Java编程语言的基本知识和技术,对于初学者来说是非常实用的参考书籍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值