Java--相关特性

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.外部类要访问内部类,必须建立内部类对象。

时间: 2025-01-12 08:01:05

Java--相关特性的相关文章

JAVA 相关资料

在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样我们清楚的知道我们大概处于那个阶段和水平. Java程序员 高级特性 反射.泛型.注释符.自动装箱和拆箱.枚举类.可变 参数.可变返回类型.增强循环.静态导入 核心编程 IO.多线程.实体类. 集合类.正则表达式. XML和属性文件 图形编程 AWT(Java2D/JavaSound/JMF).Swing.SWT.JFace 网路编程 Applet.Socket/TCP/UDP.

跟王老师学Java三大特性(一):案例 QuickHit:需求分析

项目案例:QuickHit:需求分析 主讲教师:王少华   QQ群号:483773664 学习目标 学会用面向对象思想来进行需求分析 一.需求 根据输入速率和正确率将玩家分为不同级别 级别越高,一次显示的字符数越多,玩家正确输入一次的得分也越高 规定时间内完成规定次数的输入,正确率达到规定要求,则升级 玩家最高级别为6级.初始级别一律为1级 用户错误输入一次,游戏结束 二.面向对象分析 (一) 发现类 玩家(Player)类 游戏(Game)类 级别(Level)类 (二)发现类的属性 1.玩家

SAE Java相关问题小结

转自:http://blog.csdn.net/bhq2010/article/details/8580412 Sae中使用的servlet容器是jetty7.4.x 我想在web.xml中配置一个自己编写的servlet,实现web启动时的初始化工作,但是总是出现各种问题,下面总结了一下在sae中使用java的一些注意事项: 1.在eclipse中开发java web项目时,我总喜欢直接把需要的jar包复制到WEB-INF/lib下,但在开发sae项目时,最好把需要的jar包放到usr lib

分治法-折半查找和二叉树的相关特性

4.3 折半查找 对于有序数组的查找来说,折半查找是一种性能卓越的算法.它通过比较查找健K和数组中间元素A[m]来完成查找工作.如果它们相等,算法结束.否则,如果K<A[m],就对数组的左半部分执行该操作,如果K>A[m],则对数组的右半部分执行该操作. 折半查找是基于递归思想的,但也可以以迭代方式实现. 代码实现: /** * 折半查找(递归方式实现) * @author xiaofeig * @since 2015.9.16 * @param array 查找的目标数组 * @param

主流的单元测试工具之-JAVA新特性-Annotation 写作者:组长 梁伟龙

1:什么是Annotation?Annotation,即“@xxx”(如@Before,@After,@Test(timeout=xxx),@ignore),这个单词一般是翻译成元数据,是JAVA的一个新特性. 主流的单元测试工具之-JAVA新特性-Annotation - groupthreetogether - group博客 2:元数据的简单介绍: @Before:使用了该元数据的方法在每个测试方法执行之前都要执行一次. @After:使用了该元数据的方法在每个测试方法执行之后要执行一次.

Java Nio 特性学习(一)

Java NIO 特性学习 Java NIO 包含几个核心的组件: Channels Buffer Selectors Channels 可以理解为资源的一个流,通过这个流资源可以从Channel读取Data到一个Buffer中或者从一个Buffer中写入Data到Channel: Channel Implementations 集中Jdk7常用的Channel上线 FileChannel : 操作文件读取或者写入数据 DatagramChannel : 从一个网络UDP连接中读取或写入数据 S

java相关的面试题目

1.java/c++/ruby/python集中语言的对比 java和c++ java和ruby java和python java相关的面试题目,布布扣,bubuko.com

Java多态特性:重载和覆写的比较

Java重载: 在同一个类中 方法具有相同的名字,相同或不同的返回值,但参数不同的多个方法(参数个数或参数类型) public class MethoDemo{ public static void main(String args[]){ int one = add(10,20) ; // 调用整型的加法操作 float two = add(10.3f,13.3f) ; // 调用浮点数的加法操作 int three = add(10,20,30) ; // 调用有三个参数的加法操作 Syst

Java相关配置合集

Java环境变量配置: 1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为C:\java\jdk1.6.0_08: 2.安装完成后,右击“我的电脑”,点击“属性”: 3.XP选择[高级]选项卡,WIN7选择[高级系统设置] ,然后点击“环境变量”: 4.在“系统变量”中新建变量名为:JAVA_HOME,变量值为:指明JDK安装路径,就是刚才安装时所选择的路径 C:\java\jdk1.6.0_08: 点确定 5.在“系统变量”找到path这个变量,选中后点编辑,鼠标放在变

java三大特性之封装

1.封装 封装概述:是指隐藏对象的属性和实现细节,仅仅对外提供公共访问方式. 好处: 隐藏实现细节,提供公共的访问方式 提高了代码的复用性 提高了安全性 封装原则: 将不需要对外提供的内容都隐藏起来. 把属性隐藏,提供公共方法对其访问. 2.private关键字 private关键字是一个权限修饰分,可以修饰成员变量和成员方法,被private修饰的成员变量或成员方法只能在本类中使用. private最常见的应用:1.把成员变量用private修饰 2.提供对应的setter和getter方法.