首页 Java java教程 Java特性总结

Java特性总结

Jul 21, 2017 pm 02:17 PM
特性 相关

1.继承(关键词:extends):(子父类)
  1.提高代码的复用性。
  2.让类与类之间产生了关系。有了这个关系,才有了多态的特性。

1.1变量
  如果子父类中出现非私有的(private)同名成员变量时,子类要访问本类中的变量,用this,子类要访问父类中的同名变量,用super。
  super的使用和this使用几乎一致。
  this代表的是本类对象的引用。
  super代表的父类对象的引用。

1.2 子父类中的函数
  当子类出现和父类一模一样的函数时,
  当子类对象调用该函数,会运行子类函数的内容。如同父类的函数被覆盖一样。

  这种情况是函数的另一个特性:重写(覆盖)

  当子类继承父类,沿袭了父类的功能,到子类中,但是子类虽具备该功能,但是功能的内容却和父类不一致,这时,没有必要定义新功能,而是使用覆盖特性,保留父类的功能定义,并重写功能内容。

覆盖注意事项:
  1.子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。(不写权限修饰符则是默认权限,介于private和public之间。)
  2.静态只能覆盖静态。

重载和重写:
  重载:只看同名函数的参数列表。
  重写:子父类中的方法名和返回类型要一模一样。(即:返回类型  方法名() 要一样)

1.3 子类中的构造函数。
  在对子类对象进行初始化时,父类的构造函数也会运行,那是因为子类的构造函数默认第一行有一条隐式的语句 super();

为什么子类一定要访问父类中的构造函数。
  因为父类中的数据子类可以直接获取,所有子类对象在建立时,需要先查看父类是如何对数据进行初始化的。所以子类在对象初始化时,要先访问一下父类中的构造函数。如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定。

注意:super语句一定要定义在子类构造函数的第一行。


结论:
  子类的所有的构造函数,默认都会访问父类中空参数的构造函数。
  因为子类每一个构造函数内的第一行都会有一句隐式super();
  当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数。
  当然:子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数。子类中至少会有一个构造函数会访问父类中的构造函数。(因为this()和super()都只能放在构造函数的第一行,所以在构造函数中只能存在其中一个。)


注意:千万不要为了获取其他类的功能,简化代码而继承。必须是类与类之间有所属关系才可以继承。所属关系 is  a 。
2.final:最终。作为一个修饰符。
2.1 可以修饰类,函数,变量。
2.2 被final修饰的类不可以被继承。为了避免被继承,避免被子类重写功能。
2.3 被final修饰的方法不能被重写
2.4 被final修饰的变量是一个常量只能赋值一次,既可以修饰成员变量,也可以修饰局部变量。当描述事物时,一些数据的出现,值是固定的,那么这时为了增强阅读性,都给这些值起个名字。方便于阅读。而这个值不需要改变,所以加上final修饰。 作为常量:常量的书写规范所有字母都大写,如果由多个单词组成。单词间通过_连接。(eg: final    double PI = 3.14; final int SET_ON = 1;)
2.5 内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。

3. 抽象:
3.1 抽象方法一定在抽象类中。
3.2抽象方法和抽象类都必须被 abstract关键字修饰。(abstract class 类名 { abstract void 方法名(); })
3.3抽象类不可以用new创建对象。因为调用抽象方法没意义。
3.4 抽象类中的抽象方法要被使用,必须由子类重写其所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
一般类和抽象类的异同:抽象类和一般类没有太大的不同。该如何描述事物,就如何描述事物,只不过,该事物出现了一些看不懂的东西。这些不确定的部分,也是该事物的功能,需要明确出现。但是无法定义主体。通过抽象方法来表示。
抽象类比一般类多了个抽象函数。就是在类中可以定义抽象方法。
抽象类不可以实例法。
特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
4. 模版设计模式:
  在定义功能时,功能的一部分是确定的,但是有一部分是不确定,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去。由该类的子类去完成。
5.接口:
  初期理解,可以认为是一个特殊的抽象类。当抽象类中的方法都是抽象的(abstract),那么该类可以通过接口的形式来表示。
  class :用于定义类
  interface:用于定义接口。接口也是一种类。可以生成class文件。

接口定义时,格式特点:
  1.接口中常见定义:常量,抽象方法。接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。
  2.接口中的成员都有固定修饰符。
  常量:public static final
  方法:public abstract
  记住:接口中的成员都是public的。
  接口:是不可以创建对象的,因为有抽象方法(abstract)。需要被子类实现,子类对接口中的抽象方法全都重写后,子类才可以实例化。否则子类是一个抽象类。
  eg: interface Inter
  {
    //public static final 和public abstract修饰符缺少也可以,因为接口中的成员都有固定修饰符。但是开发中最好写,增强阅读性。
    public static final int SET_ON = 1;
    public abstract void show();
  }
  //使用接口implements
  class Test implements Inter
  {
    public void show(){} //需要重写抽象方法show,才能创建对象
  }
  class InterfaceDemo
  {
    public static void main(String[] args)
    {
      Test t = new Test();
      System.out.println(t.SET_ON);

    }

  }

接口的特点:
  接口是对外暴露的规则。
  接口是程序的功能扩展。
  接口可以用来多实现。
  类与接口之间是实现关系,而且类可以继承一个类的同时实现多接口。
接口与接口之间可以有继承关系。
6.多态:
  定义:某一类事物的多种存在形态。
  eg:动物中猫、狗
  猫这个对象对应的类型是猫类型
  猫 x = new 猫();
  同时猫也是动物中的一种,也可以把猫称为动物。
  动物 y = new 猫();
  动物是猫和狗具体事物中抽取出来的父类型。
  父类型引用指向了子类型对象。
6.1.多态的体现:
  父类的引用指向了自己的子类对象。
  父类的引用也可以接收自己的子类对象。
  eg: 父类  父类引用名 = new 子类();//类型提升。向上转型。要使用子类特有功能,需要向下转型:子类   新 子类引用名 = (子类)原父类引用名
  关键字: instanceof 判断引用类型
    eg: if (a instanceof Cat)//判断a是不是猫类型。
6.2.多态的前提:
   必须是类与类之间有关系。要么继承,要么实现。
  通常还有一个前提:子类必须覆盖(重写)。

6.3.多态的好处:
  多态的出现大大的提高了程序的扩展性。
6.4.多态的弊端:
  提高了扩展性,但是只能使用父类的引用访问父类中成员。

6.5在多态中非静态成员函数的特点:
  在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有,编译失败。
  在运行时期:参阅对象所属的类中是否有调用的方法。
  简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。
6.6在多态中成员变量的特点:
  无论编译和运行,都参考左边(引用型变量所属的类。)
  在多态中静态成员函数的特点:
    无论编译和运行,都参考左边(static本身就可以直接调用)。

7.object:是所有对象的直接或者间接父类,传说中的上帝。
  该类中定义的肯定是所有对象都具备的功能。
  内部类的访问规则:
    1.内部类可以直接访问外部类中的成员,包括私有。
    2.外部类要访问内部类,必须建立内部类对象。

以上是Java特性总结的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

win7家庭版与win7旗舰版的区别介绍 win7家庭版与win7旗舰版的区别介绍 Jul 12, 2023 pm 08:41 PM

大家都知道win7系统有很多种版本,比如win7旗舰版、win7专业版、win7家庭版等,有不少用户在家庭版和旗舰版之间纠结,不知道选择哪个版本比较好,所以今天小编来跟大家说说win7家庭餐与win7旗舰版的区别介绍,大家一起来看看吧。1、体验不同家庭普通版使您的日常操作变得更快、更简单,可以更快、更方便地访问使用最频繁的程序和文档。家庭高级版让您享有最佳的娱乐体验,可以轻松地欣赏和共享您喜爱的电视节目、照片、视频和音乐。旗舰版集各版本功能之大全,具备Windows7家庭高级版的所有娱乐功能和专

掌握Spring MVC的关键概念:了解这些重要特性 掌握Spring MVC的关键概念:了解这些重要特性 Dec 29, 2023 am 09:14 AM

了解SpringMVC的关键特性:掌握这些重要的概念,需要具体代码示例SpringMVC是一种基于Java的Web应用开发框架,它通过模型-视图-控制器(MVC)的架构模式来帮助开发人员构建灵活可扩展的Web应用程序。了解和掌握SpringMVC的关键特性将使我们能够更加有效地开发和管理我们的Web应用程序。本文将介绍一些SpringMVC的重要概念

Golang中有类似类的面向对象特性吗? Golang中有类似类的面向对象特性吗? Mar 19, 2024 pm 02:51 PM

在Golang(Go语言)中并没有传统意义上的类的概念,但它提供了一种称为结构体的数据类型,通过结构体可以实现类似类的面向对象特性。在本文中,我们将介绍如何使用结构体实现面向对象的特性,并提供具体的代码示例。结构体的定义和使用首先,让我们看一下结构体的定义和使用方式。在Golang中,结构体可以通过type关键字定义,然后在需要的地方使用。结构体中可以包含属

选择适用的Go版本,根据需求和特性 选择适用的Go版本,根据需求和特性 Jan 20, 2024 am 09:28 AM

随着互联网的快速发展,编程语言也在不断演化和更新。其中,Go语言作为一种开源的编程语言,在近年来备受关注。Go语言的设计目标是简单、高效、安全且易于开发和部署。它具有高并发、快速编译和内存安全等特性,让它在Web开发、云计算和大数据等领域中有着广泛的运用。然而,目前Go语言也有不同的版本可供选择。在选择合适的Go语言版本时,我们需要考虑需求和特性两个方面。首

5g的三个特性是什么 5g的三个特性是什么 Dec 09, 2020 am 10:55 AM

5g的三个特性是:1、高速率;在实际应用中,5G网络的速率是4G网络10倍以上。2、低时延;5G网络的时延大约几十毫秒,比人的反应速度还要快。3、广连接;5G网络出现,配合其他技术,将会打造一个全新的万物互联景象。

C++ 函数的类型和特性 C++ 函数的类型和特性 Apr 11, 2024 pm 03:30 PM

C++函数有以下类型:简单函数、const函数、静态函数、虚函数;特性包括:inline函数、默认参数、引用返回、重载函数。例如,calculateArea函数使用π计算给定半径圆的面积,并将其作为输出返回。

java的特性是什么 java的特性是什么 Aug 09, 2023 pm 03:05 PM

java的特性是:1、简单易学;2、面向对象,使得代码更加可重用和可维护;3、平台无关性,能在不同的操作系统上运行;4、内存管理,通过自动垃圾回收机制来管理内存;5、强类型检查,变量在使用之前必须先声明类型;6、安全性,可以防止未经授权的访问和恶意代码的执行;7、多线程支持,能提高程序的性能和响应能力;8、异常处理,可以避免程序崩溃;9、大量的开发库和框架;10、开源生态系统。

提升代码效率的五大PHP8亮点功能! 提升代码效率的五大PHP8亮点功能! Jan 13, 2024 am 08:19 AM

PHP8的五大亮点功能,让你的代码更高效!PHP(HypertextPreprocessor)是一种广泛使用的开源脚本语言,用于Web开发。它简单易学,可以与HTML嵌套使用,同时也支持面向对象编程。PHP8作为最新版本,具有许多令人兴奋的新特性和改进,以下是五个主要亮点功能,可以使你的代码更高效。一、JIT编译器(Just-In-TimeCompile

See all articles