精华内容
下载资源
问答
  • 下面是一个选择题 下列程序的运行结果是() class X ...class Y { Y() { System.out.print("Y"); } } public class Z extends X { Z() { System.out.print("Z"); } Y...
    下面是一个选择题
    下列程序的运行结果是()
    
    class X
    {	
    	Y b=new Y();
    	X()
    	{
    		System.out.print("X");
    	}	
    }
    class Y
    {
    	Y()
    	{
    		System.out.print("Y");
    	}
    }
    public class Z extends X
    {	
    	Z()
    	{
    		System.out.print("Z");
    	}
    	Y y=new Y();
    	public static void main(String[] args)
    	{
    		new Z();
    	}
    }
    A Z B YZ C XYZD YXYZ

    对Java较熟悉的同学,对这道题的感觉可能是会而又不会。

    这道题考察的知识点主要有继承,子类实例化顺序,JVM实现机制等。

    从题中,我们比较容易可以排除A,C(主要是在main方法new一个Z时,先要执行成员变量初始化,new出一个Y,打印了Y)

    但很多同学可能对答案D不理解。在此我深入讲解一下


    咱们先搞清楚程序执行过程把,我写在你的程序上标出程序输出过程把:
    class X
    {	
    	Y b=new Y();                //     **********************第一个输出
    	X()
    	{
    		System.out.print("X");  // **********第二个输出
    	}	
    }
    class Y
    {
    	Y()
    	{
    		System.out.print("Y");
    	}
    }
    public class Z extends X
    {	
    	Z()
    	{
    		System.out.print("Z");
    	}
    	Y y=new Y();   //  *** ***************************第三个输出
    	public static void main(String[] args)
    	{
    		new Z();          // 第四个输出
    	}
    }
    第一个知识点:继承。子类继承父类,程序执行的过程中先加载用父类,这也是出现重写的原因。所以程序先加载了类X。
    第二个知识点:因为java程序在执行时先加载全局变量。在X类中的成员变量是Y b = new Y();在程序加载b 时需要调用类Y的无参构造方法,就输出了Y。
    第三个知识点:构造器。程序调用默认调用的是构造器是无参构造器,所以在继承类X时,程序先执行了X的无参构造器输出x(当给这个参构造器有参数时就不会输出x)。当new一个对象时就是调用这个类的构造器。第三个输出和第四个输出和上面类似。


    展开全文
  • java 继承问题 ... Y y=new Y(); Z(){ system.out.println(“Z”); } public static void main(string args【】){ Z z=new Z(); } } class X{ Y y=new Y(); X(){ s
    java 继承问题 
     public class Z extens X{
       Y y=new Y();
       Z(){
          system.out.println(“Z”);
    }
       public static void main(string args【】){
          Z z=new Z();
    }
    }
    class X{
       Y y=new Y();
       X(){
          system.out.println(“X”);
    }
    }
    class Y{
       
       Y(){
          system.out.println(“Y”);
    }
    }
    

    在内存中是怎么执行的?

    执行结果: 

    Y

    X

    Y

    Z

    分析:
    1  ,执行   Y y=new Y(); 调用  C lass Y    输出 Y
        2执行无参构造器     输出Z
      为什么 Class X 没起作用呢?是因为 Z继承了X ,但是 并没有用到关于X中的成员。


    展开全文
  • JAVA中类的public classclass的区别详解

    万次阅读 多人点赞 2017-05-10 11:48:20
    为了控制某个类的访问权限,修饰词必须出现在关键字class之前。例如:public class Student {} 在编写类的时候可以使用两种方式定义类: (A)public class定义类 (B)class定义类 2.public class定义类 ...

    ##1.类的访问权限

    • 为了控制某个类的访问权限,修饰词必须出现在关键字class之前。例如:public class Student {}
    • 在编写类的时候可以使用两种方式定义类:
      (A)public class定义类
      (B)class定义类
      ##2.public class定义类
    • 如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致。
    • 被public修饰的类可以被其他包访问。如果现在的库名是com,那么就可容易通过下面的声明访问Student:
    import com.Student;
    或者
    import com.*;
    

    这里写图片描述
    ##3.class定义类

    • 如果一个类声明的时候使用了class进行了声明,则作为启动类的名称可以与文件名称不一致,但是执行的时候肯定执行的是生成后的名称。
    • 没有public修饰的类,该类就拥有了包访问权限,即该类只可以用于该包之中。
      这里写图片描述

    这里写图片描述
    ##4.class定义的类只具有包访问权限,该类不能被其他包访问

    package access.cookie2;
    
    public class Cookie
    {
    	Cookie()
    	{
    		System.out.println("Cookie constructor");
    	}
    	public void bite()
    	{
    		System.out.println("bite");
    	}
    }  
    
    package access;
    import access.cookie2.*;
    
    public class ChocolateChip2
    {
    	public ChocolateChip2()
    	{
    		System.out.println("ChocolateChip2 constructor");
    	}
    
    	public static void main(String[] args)
    	{
    		ChocolateChip2 x = new ChocolateChip2();
    		
    		Cookie y = new Cookie();
    		y.bite();		
    	}
    }
    
    • 编译、运行:
      这里写图片描述

    • 如果把Cookie修改为:public class Cookie{}。再编译、运行:
      这里写图片描述

    ##5.小结

    • 每个编译单元(文件)都只能有一个public类。即每个编译单元都有单一的公共接口,用public类实现。此时,mian()就必须要包含在public类中。
    • public类的名称必须完全与含有该编译单元的文件名称一致,包括大小写。如果不匹配,编译时错误。
    • 如果编译单元(文件)中不含有一个public类,此时编译单元文件名称可以与启动类名称可以不一致,即可以随意对文件命名。这样的话,main()不是必须要放在public类中才能运行程序。
    • **总的来说,一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必须与之一致,否则无法编译,如果源文件中没有一个public类,则文件名与类中没有一致性要求。**至于main()不是必须要放在public类中才能运行程序。

    欢迎关注公众号:VenusBlockChain 致力于区块链技术研究,传播区块链技术和解决方案、区块链应用落地、区块链行业动态等。
    在这里插入图片描述

    参考:http://www.jb51.net/article/39892.htm
    http://www.cnblogs.com/stevengerrard/p/4067422.html
    《java编程思想》

    展开全文
  • class Y{ public: void g(X *p); }; class X{ public: X(int _i); int display(){return i;} friend void Y::g(X *p); friend class Z; friend void h(X *p); private: int i; }; class Z{ public...
  • es6之class封装

    千次阅读 2018-02-02 18:14:22
    传统的面向对象语言(比如 C++ 和 Java)是通过class类来生成实例对象,javascript则是通过构造函数+prototype来封装,所以,js在es6引入了class类的概念用class定义一个类//定义类 class Point { constructor(x, y...

    传统的面向对象语言(比如 C++ 和 Java)是通过class类来生成实例对象,javascript则是通过构造函数+prototype来封装,所以,js在es6引入了class类的概念

    用class定义一个类

    //定义类
    class Point {
      constructor(x, y) {
      // this关键字则代表实例对象
        this.x = x;
        this.y = y;
      }
    
      toString() {
        return '(' + this.x + ', ' + this.y + ')';
      }
    }

    关于constructor

    • constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。

    • 执行这个constructor方法默认返回实例对象(即this)

    使用时

    var point = new Point();

    注意: 类必须使用new调用,否则会报错。这是它跟普通构造函数的一个主要区别,后者不用new也可以执行。

    1、关于class的prototype属性

    类的所有方法都定义在类的prototype属性上面。

    class Point {
      constructor() {
        // ...
      }
    
      toString() {
        // ...
      }
    }
    
    // 等同于
    
    Point.prototype = {
      constructor() {},
      toString() {},
    };

    在类的实例上面调用方法,其实就是调用原型上的方法。

    point.constructor === Point.prototype.constructor // true

    point是Point类的实例,它的constructor方法就是Point类原型的constructor方法。

    Point.prototype.constructor指向的是Point这个类 而point.constructor的原型对象也是Point

    此外,toString方法是Point类内部定义的方法,它是不可枚举的。这一点与 ES5 的行为不一致。

    Object.keys(Point.prototype)
    // 采用es6的class写法是 [], 用es5的 Point.prototype.toString = function() {
      // 即返回["toString"]
    };
    Object.getOwnPropertyNames(Point.prototype)
    // ["constructor","toString"]

    2、类的实例对象

    与 ES5 一样,实例的属性除非显式定义在其本身(即定义在this对象上),否则都是定义在原型上(即定义在class上)。

    point.hasOwnProperty('x') // true
    point.hasOwnProperty('y') // true
    point.hasOwnProperty('toString') // false
    point.__proto__.hasOwnProperty('toString') // true

    上面代码中,x和y都是实例对象point自身的属性(因为定义在this变量上),所以hasOwnProperty方法返回true,而toString是原型对象的属性(因为定义在Point类上),所以hasOwnProperty方法返回false。这些都与 ES5 的行为保持一致。

    类的所有实例共享一个原型对象。

    var p1 = new Point(2,3);
    var p2 = new Point(3,2);
    
    p1.__proto__ === p2.__proto__
    //true

    p1和p2都是Point的实例,它们的原型都是Point.prototype,所以proto属性是相等的。

    3、类的私有方法和私有属性

    ES6 不提供私有属性和私有方法,我们只能通过变通方法模拟实现。

    一种是在命名上加以区别。私有方法用_foo(),即在方法前面添加下划线,表示这是一个只限于内部使用的私有方法。但是,这种命名是不保险的,在类的外部,还是可以调用到这个方法。

    一种是利用Symbol值的唯一性,将私有方法的名字命名为一个Symbol值。

    还有一种是索性将私有方法移出模块,因为模块内部的所有方法都是对外可见的。

    class Widget {
      foo (baz) {
        bar.call(this, baz);
      }
    
      // ...
    }
    
    function bar(baz) {
      return this.snaf = baz;
    }

    上面代码中,foo是公有方法,内部调用了bar.call(this, baz)。这使得bar实际上成为了当前模块的私有方法。

    4、Class 的静态方法

    类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。

    class Foo {
      static classMethod() {
        return 'hello';
      }
    }
    
    Foo.classMethod() // 'hello'
    
    var foo = new Foo();
    foo.classMethod()
    // TypeError: foo.classMethod is not a function

    Foo类的classMethod方法前有static关键字,表明该方法是一个静态方法,可以直接在Foo类上调用(Foo.classMethod()),而不是在Foo类的实例上调用。如果在实例上调用静态方法,会抛出一个错误,表示不存在该方法。

    注意 如果静态方法包含this关键字,这个this指的是类,而不是实例

    展开全文
  • ES6 Class

    千次阅读 2016-07-28 19:54:37
    从ES6(ES2015)开始,JS提出了类(Class)概念,JS中的类只是JS现有的、基于原型的继承的一种语法包装(语法糖),它能让我们用理简明的语法实现继承。
  • 问题出现原因:在验证集的数据中,标签的类别只有一种。比如一个二元分类模型中,标签有两种类型0和1,但在验证集的一段数据中数据所对应的标签全为0,在标签中只有一种类别的数据。. 解决办法: ...
  • ES6之Class详解篇

    千次阅读 多人点赞 2020-08-12 20:07:22
    ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法。 类的数据类型就是函数,类本身就指向构造函数。 使用的时候,也是...
  • C++11:模板的改进

    千次阅读 2017-09-03 12:17:15
    右尖括号>改进在C++98/03的泛型编程中,模板实例化有一个很繁琐的地方,就是连续两个右尖括号(>>)会被编译解释成右移操作符,而不是模板...template <class T> class Y{};int main() { Y<X<1> > x1; // ok, 编译成功
  • es6 javascript的Class 类的继承

    千次阅读 2016-12-09 18:28:13
    1 基本用法Class 之间可以通过extends关键字实现继承, 这比 ES5 的通过修改原型链实现继承, 要清晰和方便很多。class ColorPoint extends Point {}上面代码定义了一个ColorPoint类, 该类通过extends关键字, 继承...
  • ES6 class的基本语法

    千次阅读 2019-03-28 00:45:44
    class的基本语法 class是ES6提供的更接近于传统语言的的写法,作为对象的模板.通过class关键字,可以定义类 class写法只是一个语法糖,它只是让对象原型的写法更加清晰,更像面向对象编程的语法.例如: //传统对象...
  • C++中Abstract class的使用

    万次阅读 2016-08-07 15:52:39
    C++中Abstract class的使用
  • es6 javascript的 class 类的基本语法

    千次阅读 2016-12-09 10:28:30
    1 概述JavaScript 语言的传统方法是通过构造函数, 定义并生成新对象。... this.y = y; } Point.prototype.toString = function() { return '(' + this.x + ', ' + this.y + ')'; }; var p = new P...
  • ES6中的类(Class

    万次阅读 多人点赞 2020-11-29 20:22:21
    ES6中的类(Class)类的基本语法constructor方法this与class(原型)属性与方法添加到this上属性与方法添加到类上类的静态成员 类的基本语法 ES6提供了更接近面向对象(注意:javascript本质上是基于对象的语言)...
  • 先看下面一段代码: #include using namespace std; class X{};...class Y:public virtual X{}; class Z:public virtual X{}; class A:public Y,public Z{}; int main() { cout (X) : " (X) << endl
  • shared_ptr的拷贝构造函数

    千次阅读 2018-05-07 22:41:19
    class Y &gt; explicit shared_ptr( Y* ptr );其中T可以等于Y,也可以不等于Y。那么对于它的拷贝构造函数:shared_ptr( const shared_ptr&amp; r ) noexcept; 和 template&lt; class Y &gt; shared...
  • C++虚继承之类的实际大小

    千次阅读 2012-10-11 07:06:59
    这几天翻箱底将去年买的《深度探索C++对象模型》这本NB的书拿出来看看,The Semantics of Data这一章中发现了一个过去一直...class Y : public virtual X{}; class Z : public virtual X{}; class A : public Y, public
  • This article contains Logistic Regression for Multi-class Classification (one-vs-all classification)
  • 当你只有一个this指针的时候,而你又想通过这个this指针得到一个shared_...其中 enable_shared_from_this 可以来自boost中的,也来自c++11:class Y: public enable_shared_from_this<Y> { public: shared_ptr<Y> f()
  • js中es6 class类的继承

    千次阅读 2019-09-19 18:02:55
    js中 es6 class类的继承 语法 // 父类 class Father{ } // 子类继承父类 class Son extends Father { } 子类使用super关键字访问父类的方法 //定义了父类 class Father { constructor(x, y) { this.x = x; ...
  • js中class基本语法

    万次阅读 多人点赞 2019-07-10 17:33:54
    Class 的基本语法 简介 类的由来 JavaScript 语言中,生成实例对象的传统方法是通过构造函数。下面是一个例子。 function Point(x, y) { this.x = x; this.y = y; } Point.prototype.toString = function () { ...
  • Scala class和case class的区别

    万次阅读 2017-07-26 17:33:28
    在Scala中存在case class,它其实就是一个普通的class。但是它又和普通的class略有区别,如下:  1、初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new; scala> case class ...
  • 对象/模型中的单向关联和双向关联

    千次阅读 2015-05-07 16:16:22
    一:一对一 1.单向(X-->Y) package com.xs; public class X { private Y y; public Y getY() { return y; } public void setY(Y y) { this.y = y; } ...public class Y { } 2.双向 p
  • Scala关键字class和object

    千次阅读 2017-10-23 20:50:16
    面向对象 和Java一样Scala面向对象 类是对象的模板、抽象。...class表示类 和Java不同,class不能运行。虽然可以定义main方法,但是不能运行 class Point(xc: Int, yc: Int) { var x: Int
  • Class的基本用法

    千次阅读 2018-07-19 18:25:05
    Class(类)这个概念,作为对象的模板。class可以看作只是一个语法糖,通过class关键字,可以定义类。让对象原型的写法更加清晰、更像面向对象编程的语法。类和模块的内部,默认... constructor(x, y) { this.x =...
  • C++ Friend class

    千次阅读 2014-04-14 23:09:04
    Here again, to learn the friend class in C++. And here is a demo for a better understanding. The demo is mainly to summary t
  • ES6--Class、Module及常用特性

    千次阅读 2017-05-07 12:26:16
    十八、Class 示例:ES5 function Point (x, y) { this .x = x; this .y = y; } Point.prototype.toString = function () { return '(' + this .x + ', ' + this .y + ')' ; }; var ...
  • python中class 类定义与使用

    千次阅读 多人点赞 2020-02-02 19:40:08
    python中class 类定义与使用 在学习python中类这一部分也是非常常用的,类的定义类似于函数却又不同于函数,class 定义一个类, 后面的类别首字母推荐以大写的形式定义,比如Calculator. ...比如def add(self,x,y...
  • 理解ES6Class的继承

    千次阅读 热门讨论 2021-04-08 13:57:39
    class之间可以通过extends关键字实现继承,写法上比es5更加清晰 class Point{} class FriendPoint extends Point{ //FriendPoint 继承了Point类的所有属性和方法 constructor(x,y,name){ super(x,y) //...
  • one class SVM

    万次阅读 多人点赞 2016-02-21 15:43:24
    % Y = [Y;Y2]; [Y1,Y2,Y3] = svmpredict(Y2,X2,model); for i = 1 : length (Y1) if (Y1( i ) > 0 ) plot(X2( i , 1 ),X2( i , 2 ), 'g.' ); else plot(X2( i , 1 ),X2( i , 2 ), 'r.' ); end ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,178,455
精华内容 471,382
关键字:

Classy