精华内容
下载资源
问答
  • extends super this final staticextends关键字用作继承功能,可以申明一个是从另外一个继承而来,一般形式如下:class子类 extends父类 {}继承是java面向对象编程技术一块基石,因为它允许创建分等级层次...

    面向对象过程接触的重要关键字:extends   super   this   final   static

    extends关键字用作继承功能,可以申明一个类是从另外一个类继承而来的,一般形式如下:

    class子类 extends父类 {}

    继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import)祖先类。

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

    子类拥有父类非private的属性,方法。

    子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

    子类可以用自己的方式实现父类的方法。

    Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类,这是java继承区别于C++继承的一个特性。

    提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。

    super 与 this 关键字

    super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

    this关键字:指向自己的引用。

    super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法。super 也可以用在子类的子类中,Java 能自动向上层类追溯。父类行为被调用,就好象该行为是本类的行为一样,而且调用行为不必发生在父类中,它能自动向上层类追溯。

    super 关键字的功能:

    调用父类中声明为 private 的变量。

    点取已经覆盖了的方法。

    作为方法名表示父类构造方法。

    无论是 super() 还是 this(),都必须放在构造方法的第一行。

    值得注意的是:

    在构造方法中调用另一个构造方法,调用动作必须置于最起始的位置。

    不能在构造方法以外的任何方法内调用构造方法。

    在一个构造方法内只能调用一个构造方法。

    如果编写一个构造方法,既没有调用 super() 也没有调用 this(),编译器会自动插入一个调用到父类构造方法中,而且不带参数。

    最后注意 super 与 this 的区别:super 不是一个对象的引用,不能将 super 赋值给另一个对象变量,它只是一个指示编译器调用父类方法的特殊关键字。

    static 的内存分配

    静态变量属于类,不属于任何独立的对象,所以无需创建类的实例就可以访问静态变量。之所以会产生这样的结果,是因为编译器只为整个类创建了一个静态变量的副本,也就是只分配一个内存空间,虽然有多个实例,但这些实例共享该内存。实例变量则不同,每创建一个对象,都会分配一次内存空间,不同变量的内存相互独立,互不影响,改变 a 对象的实例变量不会影响 b 对象。

    注意:静态变量虽然也可以通过对象来访问,但是不被提倡,编译器也会产生警告。static 的变量是在类装载的时候就会被初始化。也就是说,只要类被装载,不管你是否使用了这个static 变量,它都会被初始化。类变量(class variables)用关键字 static 修饰,在类加载的时候,分配类变量的内存,以后再生成类的实例对象时,将共享这块内存(类变量),任何一个对象对类变量的修改,都会影响其它对象。

    静态方法

    静态方法是一种不能向对象实施操作的方法。例如,Math 类的 pow() 方法就是一个静态方法,语法为 Math.pow(x, a),用来计算 x 的 a 次幂,在使用时无需创建任何 Math 对象。因为静态方法不能操作对象,所以不能在静态方法中访问实例变量,只能访问自身类的静态变量。

    以下情形可以使用静态方法:

    一个方法不需要访问对象状态,其所需参数都是通过显式参数提供(例如 Math.pow())。

    一个方法只需要访问类的静态变量。

    main() 也是一个静态方法,不对任何对象进行操作。实际上,在程序启动时还没有任何对象,main() 方法是程序的入口,将被执行并创建程序所需的对象。

    关于静态变量和静态方法的总结:

    一个类的静态方法只能访问静态变量;

    一个类的静态方法不能够直接调用非静态方法;

    如访问控制权限允许,静态变量和静态方法也可以通过对象来访问,但是不被推荐;

    静态方法中不存在当前对象,因而不能使用 this,当然也不能使用 super;

    静态方法不能被非静态方法覆盖;

    构造方法不允许声明为 static 的;

    局部变量不能使用static修饰。

    final关键字

    final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:

    声明类: finalclass类名{//类体}

    声明方法:修饰符(public/private/default/protected)final返回值类型方法名(){//方法体}

    注:实例变量也可以被定义为 final,被定义为 final 的变量不能被修改。被声明为 final 类的方法自动地声明为 final,但是实例变量并不是 final

    在 Java 中,声明类、变量和方法时,可使用关键字 final 来修饰。final 所修饰的数据具有“终态”的特征,表示“最终的”意思。具体规定如下:

    final 修饰的类不能被继承。

    final 修饰的方法不能被子类重写。

    final 修饰的变量(成员变量或局部变量)即成为常量,只能赋值一次。

    final 修饰的成员变量必须在声明的同时赋值,如果在声明的时候没有赋值,那么只有 一次赋值的机会,而且只能在构造方法中显式赋值,然后才能使用。

    final 修饰的局部变量可以只声明不赋值,然后再进行一次性的赋值。

    final 一般用于修饰那些通用性的功能、实现方式或取值不能随意被改变的数据,以避免被误用,例如实现数学三角方法、幂运算等功能的方法,以及数学常量π=3.141593、e=2.71828 等。

    事实上,为确保终态性,提供了上述方法和常量的 java.lang.Math 类也已被定义为final 的。如果变量被标记为 final,其结果是使它成为常数。注意:想改变 final 变量的值会导致一个编译错误。

    展开全文
  • 可以用new来创建一个类的实例,即对象。Java使用16位Unicode字符集...一个Java可以有多个父类。break语句可以用在循环和switch语句中。Java小程序Applet主类父类必须是Applet。可以用new来创建一个类的...

    一个Java类可以有多个父类。break语句可以用在循环和switch语句中。Java小程序Applet的主类的父类必须是类Applet。可以用new来创建一个类的实例,即对象。Java使用16位的Unicode字符集...

    一个Java类可以有多个父类。

    break语句可以用在循环和switch语句中。

    Java小程序Applet的主类的父类必须是类Applet。

    可以用new来创建一个类的实例,即对象。

    Java使用16位的Unicode字符集,而不仅仅为ASCII字符集,因此Java字符是一个16位的无符号整数。

    子类的成员变量能与其父类的成员变量同名。

    Java类中不能存在同名的两个成员函数。

    Java语言是编译性语言。

    final方法不能被覆盖。

    多数I/O方法在遇到错误是会抛出异常,因此在调用这些方法时必须对异常进行处理。

    abstract 是抽象修饰符,可以用来修饰类及其属性和方法。

    用javac编译Java源文件后得到代码叫字节码。

    可以用类名调用实例方法。

    Java语言是平台无关的语言。

    在类的静态方法中可以访问该类的非静态数据成员。

    Java中方法调用时参数传递都是按值传递的,因此从方法退出时,参数的值不会改变。

    声明为final的方法不能在子类中重载。

    在子类中可以覆盖一个private方法。

    在方法定义中,所有可能发生的异常都必须用try{}catch(){}捕捉并处理

    要想在类中实现多线程,类必须继承Thread类。

    Java的源代码中定义几个类,编译结果就生成几个以.class为后缀的字节码文件。

    Java程序里,回收无用的类对象使用关键字free。

    Java有垃圾回收机制,内存回收程序可在指定的时间释放内存对象。

    构造函数用于创建类的实例对象,构造函数名应与类名相同,返回类型为void。

    在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若catch中的参数类型有父类子类关系,此时应该将父类放在后面,子类放在前面。

    拥有abstract方法的类是抽象类,但抽象类中可以没有abstract方法。

    Java的屏幕坐标是以像素为单位,容器的左下角被确定为坐标的起点。

    静态初始化器是在其所属的类加载内存时由系统自动调用执行。

    在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象。

    Java小程序Applet的主类的父类可以有多个父类。

    展开

    展开全文
  • 对象的关系 是一种抽象的数据类型,他是对某一事物整体描述/定义,但是并不能代表某一个具体的事物 例如:动物、植物、手机、电脑… Person、Pet、Car等,这些都是用来描述/定义某一具体的事物...

    类与对象的关系

    • 类是一种抽象的数据类型,他是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物

    例如:动物、植物、手机、电脑…

    Person类、Pet类、Car类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为

    • 对象是抽象概念的具体实例

    例如:张三就是人的一个具体实例;张三家的狗旺财就是狗的一个具体实例

    • 能够体现出特点,展现出功能的是具体实例,而不是一个抽象的概念

    创建和初始化对象

    • 使用new关键字创建对象
    • 使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化(赋值)以及对类中构造器的调用
    • 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有一下两个特点:
    1. 必须和类的名字相同
    2. 必须没有返回类型,也不能写void

    例:

    在这里插入图片描述

    相当于一个模板:输出的就会是默认值null和0

        //属性:字段
        String name;  //默认值:null
        int age;      //默认值:0
    
    
        //方法
        public void study(){
            System.out.println(this.name+"在学习");
        }
    

    用new关键字创建对象:

    public static void main(String[] args){
    
            //类:抽象的,实例化的
            //实例化后会返回一个自己的对象
            //Student对象就是一个Student类的具体实例
    
            Student xm = new Student();
            Student xh = new Student();
    
            xm.name = "小明";  //赋值
            xm.age = 10;
    
            System.out.println(xm.name);
            System.out.println(xm.age);
    
            System.out.println("===============================");
            xh.name = "小红"; //赋值
            xh.age = 12;
    
            System.out.println(xh.name);
            System.out.println(xh.age);
    

    最后输出结果:

    在这里插入图片描述

    展开全文
  • 其实A这个类也是一个对象,它是type类的对象,可以说type类是用来创建类对象的类,我们平常写的类都是type类创建的对象,再由创建的对象再去创建我们平常使用的对象,我们可以看看type的官方文档...

    一、python中如何创建类?

    1. 直接定义类

    classA:

    a = 'a'

    2. 通过type对象创建

    在python中一切都是对象

    在上面这张图中,A是我们平常在python中写的类,它可以创建一个对象a。其实A这个类也是一个对象,它是type类的对象,可以说type类是用来创建类对象的类,我们平常写的类都是type类创建的对象,再由创建的对象再去创建我们平常使用的对象,我们可以看看type的官方文档

    type(object_or_name, bases, dict)

    type(object) -> the object's type

    type(name, bases, dict) -> a new type

    type有另一种用法type(name, bases, dict)来创建类 中,name是这个类的名字,bases是这个类的基类(是一个元组),dict是这个类的属性(是一个字典),我们通过type实现上面的例子中A类的创建

    A = type('A', (), {'a': 'a'})

    二、什么是元类编程?

    我们已经知道,类也是对象,那么我们在创建类的时候,可不可以控制类的创建过程?当然是可以的,这就是元类编程。

    三、如何实现元类编程?

    1. 在要定义的类中使用__new__方法

    classA:def __new__(cls, *args, **kwargs):

    cls.a= 'a'

    return super().__new__(cls, *args, **kwargs)

    这样就实现了创建A类的时候,添加了一个类属性a(注意的是,__new__方法要返回一个创建的对象,当然,我们也可以返回其他东西;另一个注意点是__new__方法要在实例化的时候才会运行,所以,类属性a必须是在A实例化后才会出现)

    2. 使用metaclass关键字,使用metaclass关键字的时候,我们要定义一个type类

    classB(type):def __init__(self, *args, **kwargs):

    self.a= 'a'super().__init__(*args, **kwargs)class A(metaclass=B):pass

    我们定义了一个B类继承type,在A类创建的时候传递关键字metaclass=B,就会执行B类种的代码,控制A类的创建,这个例子也是为A类添加了一个类属性a。我们还可以在B类中使用__init__,__call__方法。

    四、python中元类编程执行的顺序

    classMetaClass(type):#定义A类的时候就会调用

    def __init__(self, *args, **kwargs):print('MetaClass __init__')

    super().__init__(*args, **kwargs)#定义A类的时候,就会调用

    def __new__(cls, *args, **kwargs):print('MetaClass __new__')#*args 里面包含了创建A类的参数

    return super().__new__(cls, *args, **kwargs)#A实例化的时候才会去调用call

    def __call__(self, *args, **kwargs):print('MetaClass __call__')#这儿其实是去调用A类需要实例化的所有方法

    return super().__call__(*args, **kwargs)class A(metaclass=MetaClass):def __init__(self):print('A __init__')def __new__(cls, *args, **kwargs):print('A __new__')return super().__new__(cls, *args, **kwargs)

    a=A()#输出

    MetaClass __new__MetaClass__init__MetaClass__call__A__new__A__init__

    五、总结

    使用元类编程可以让我们在创建类的时候,给类添加一些额外的信息。但元类编程是python中难以理解的地方之一,而且工作中,大部分时候都是不会用到的,我们普通的类定义方式就可以解决问题了,若果说有99%的时候你需要控制创建类的过程,那就使用元类编程吧。

    展开全文
  • 【C++】创建对象之new关键字

    千次阅读 多人点赞 2018-11-04 15:20:44
    new创建类对象,使用完后需使用delete删除,跟申请内存类似。所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化全局类指针似乎更加高...
  • 在Java中创建对象的最简单方法是使用new关键字。让我们探索在Java中创建没有new关键字对象的其他方法。 目录 使用Class.forName()和Class.newInstance() ClassLoader loadClass() 使用Object.clone() ...
  • 摘要:特别叫量呼海是对,使用关集中用于部过局负荷控制,向某行试呼个目特定制用制在某一来限段内进次数时间g控。学院现重如发患全隐大安,创例对或发故全事生学生安,息()造作被坚决因信杜绝动成工,迅速...
  • 此时不要把它当成一个构造函数,任何js中的构造函数都只是一个函数(ES6 class关键字声明的除外),只是因为他的功能是为了创建对象的,我们才把函数名首字母大写并称之为构造函数,为了规范化。所以这是一个函数...
  • 3.1面向对象思想、和构造...Java就是面向对象的,使用java开发程序,不管做什么样的操作,我们第一步都是从创建对象、获取对象开始,有了对象我们就可以完成一切我们所需要的程序了。 Java语言是一种面向对象的程...
  • 对象的关系 是一种抽象的数据类型,它是对某一事物整体描述/定义,但是并不能代表某一个具体事物。 动物、植物、手机、电脑…… Person、Pet、Car等,这些都是用来描述/定义某一具体的事物应该...
  • Class.forName(xxx.xx.xx) 返回是一个 首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载(和new 不一样,要分清楚)。  至于什么时候用,你可以考虑一下这个问题,给你...
  • 属性名来访问,也就是使这个属性成为本类类变量,为本类对象所共有。这个属性就是全类公有。(共有类变量与对象无关,只和类有关)。注意:类中实例变量是在创建对象时被初始化,被static修饰属性,也就是类...
  • 面向对象过程接触重要关键字:extends super this final static extends 关键字用作继承功能,可以... 继承是java面向对象编程技术一块基石,因为它允许创建分等级层次的类。所有的类都是继承于 java.lang.Ob...
  • 某Tset_01面向对象基础.java中有两个 主类和Student 接下来对一图进行文字性讲解重点 先来一波基础知识 java是既是一门解释型语言也是一门编译型语言。要运行一个java文件 首先要编译生成.class字节码文件,及...
  • 继承是java面向对象编程技术一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类特征和行为,使得子类对象(实例)具有父类实例域和方法,或子类从父类继承方法,使得子类具有父类相同行为。 ...
  • 第二,使用new关键字创建的对象属于强引用对象,所谓强引用,就是jvm垃圾回收机制永远不会回收这类对象,这时候需要程序员去手动去在应该移除引用时候去将它移除。如果没有移除,这个对象将一直存在,久而久之,会...
  • 无法直接使用,需要根据类创建一个对象 步骤1:导包 import 包名称.类名 步骤2:创建 格式 名称.对象名 = new 名称(); 步骤3:使用 使用成员变量:对象名.成员变量名 使用成员方法:对象名.成员方法名(参数...
  • java 里面的关键字...而且可以在没有创建任何对象的前提下,仅仅通过本身来调用static方法。这实际上正是static方法的主要用途。这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用
  • 类和对象类类是统称一类事物的抽象概念,从程序的角度理解,类也可以理解为构造对象时所依赖的规范。对象对象可以说是一类事物的某个实体,是客观存在的,... new 是创建类对象的操作符; Person()是Person类的构造...
  • c#面向对象-关键字new

    2020-10-08 19:10:11
    (1)创建对象; (2)隐藏从父类哪里继承过来同名成员(就是子类调用不了父类成员); 下边在子类和父类中写了同样方法,调用子类实例时,只能调用到子类中方法,而父类中方法调用不到,而且此时在编辑...
  • 面向对象——关键字

    千次阅读 2012-07-21 23:13:59
    其他程序创建对象是无法直接访问。 权限修饰符,用于 修饰成员(成员变量 和成员函数),注意 一定是 ——>成员变量 成员函数。 【this】——  当成员变量和 局部变量同名时候,为了区分,可以使用一个...
  • 抽象了对象的公共部分,它泛指某一大(class) 对象特指某一个,通过实例化一个具体的对象 面向对象的思维特点: 抽取(抽象)对象共用的属性和行为组织(封装)成一个(模板) 对进行实例化, 获取的对象 ...
  • 它们的区别在于创建对象的方式不一样,前者newInstance()是使用加载机制,后者new关键字是创建一个新。那么为什么会有两种创建对象方式?这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。 Java中工厂....
  • 今天学习了匿名 接口 finall关键字的相关知识,做一个总结。 匿名: 1.没有名字子类对象。 2.匿名中,必须要包含是类型中抽象方法实现。 3.匿名是一次性。 几点区别: 1.抽象里有构造方法,抽象...
  • throw:有时我们明确要创建异常对象然后抛出它来停止程序正常处理。throw关键字用于向运行时抛出异常来处理它。throws:当我们在方法中抛出任何已检查异常而不处理它时,我们需要在方法签名中使用throws关键字让...
  • 目录java枚举和enum关键字一、枚举理解二、传统方式创建枚举 【了解】二、使用enum关键字定义枚举【掌握】三、介绍枚举类的常见方法【了解】四、枚举如何实现接口【掌握】 一、枚举理解 枚举其实就是一...
  • 文章目录第1关:什么是类,如何创建类编程要求答案第2关:构造方法编程要求答案第3关:选择题答案第4关:This关键字编程要求答案第5关:类与对象练习答案第6关:static关键字编程要求答案第7关:选择题答案 ...
  • 一、对象创建的过程和this的本质 ...构造方法是创建Java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回该的对象,但这个对象并不是完全由构造器负责创建。    创建一个对象分为如下四步:  
  • String ,static 关键字Arrays,Math 1.String 类的概述 java.lang.String 代表字符串,java程序中所有字符串文字,都可以看成是实现此类实例 String 中包含用于检查字符串各个方法,比如比较字符串,...
  • 返回对象的地址给相关的变量。 有关于this的用法 this不能用于statis方法中。 statis修饰的成员变量和方法从属于而不是对象。普通变量和方法从属于对象。 静态方法里面只能使用静态变量。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,392
精华内容 4,156
关键字:

创建类对象的关键字是