构造方法

尚学堂-第四章答案

只愿长相守 提交于 2020-01-27 00:15:03
一、选择题 1.以下语句中关于Java构造方法的说法错误的是( )。(选择一项) A.构造方法的作用是为创建对象进行初始化工作,比如给成员变量赋值 B.一个Java类可以没有构造方法,也可以提供1个或多个构造方法 C.构造方法与类同名,不能书写返回值类型 D.构造方法的第一条语句如果是super(),则可以省略,该语句作用是调用父类无参数的构造方法 2.在Java中,以下程序编译运行后的输出结果为( )。(选择一项) public class Test { int x , y ; Test ( int x , int y ) { this . x = x ; this . y = y ; } public static void main ( String [ ] args ) { Test pt1 , pt2 ; pt1 = new Test ( 3 , 3 ) ; pt2 = new Test ( 4 , 4 ) ; System . out . print ( pt1 . x + pt2 . x ) ; } } A.6 B.34 C.8 D.7 3.在Java中关于静态方法,以下说法中正确的是( )。(选择二项) A.静态方法中不能直接调用非静态方法 B.非静态方法中不能直接调用静态方法 C.静态方法可以用类名直接调用 D.静态方法里可以使用this 4

子父类中构造方法的调用

蹲街弑〆低调 提交于 2020-01-26 22:50:23
在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的隐式 super(); 语句。 格式: 调用本类中的构造方法 this( 实参列表 ); 调用父类中的空参数构造方法 super(); 调用父类中的有参数构造方法 super( 实参列表 ); 为什么子类对象创建都要访问父类中的构造方法?因为子类继承了父类的内容,所以创建对象时,必须要先看父类是如何对其内容进行初始化的,看如下程序: public class Test { public static void main(String[] args) { new Zi(); } } class Fu{ int num ; Fu(){ System.out.println("Fu 构造方法 "+num); num = 4; } } class Zi extends Fu{ Zi(){ //super(); 调用父类空参数构造方法 System.out.println("Zi 构造方法 "+num); } } 执行结果:    Fu构造方法0    Zi构造方法4 通过结果发现,子类构造方法执行时中,调用了父类构造方法,这说明,子类构造方法中有一句super()。 那么,子类中的构造方法为什么会有一句隐式的super()呢? 原因:子类会继承父类中的内容,所以子类在初始化时

this的原理图解

若如初见. 提交于 2020-01-26 21:33:59
构造方法之间可以相互调用,那为什么他们之间通过this就可以调用呢? 使用this可以实现构造方法之间的调用,但是为什么就会知道this调用哪一个构造方法呢?接下来需要图解完成。 class Person { private int age ; private String name ; Person() { } Person(String nm) { name = nm; } Person(String nm, int a) { this (nm); age = a; } } class PersonDemo { public static void main(String[] args) { Person p = new Person( " 张三 " , 23); } } 图列说明: 1.先执行main方法,main方法压栈,执行其中的new Person(“张三”,23); 2.堆内存中开辟空间,并为其分配内存地址0x33,,紧接着成员变量默认初始化(name=null age = 0); 3.拥有两个参数的构造方法(Person(String nm , int a))压栈,在这个构造方法中有一个隐式的this,因为构造方法是给对象初始化的,那个对象调用到这个构造方法,this就指向堆中的那个对象。 4.由于Person(String nm , int a

接口与抽象类的区别和联系

天大地大妈咪最大 提交于 2020-01-26 19:50:47
接口 1、因为java不支持多重继承,所以有了接口,一个类只能继承一个父类,但是可以实现多个接口,同时接口本身也可以继承多个接口。 2、接口里面的成员变量默认是public static final类型的。必须被显示的初始化。 3、接口里面的方法默认都是public abstract类型的。隐式声明。 4、接口没有构造方法,不能被实例化。 5、接口不能实现另外的一个接口,但是可以继承多个接口。 6、类如果实现了一个接口,那么必须实现接口里面的所有抽象方法,否则类就要被定义为抽象类。 抽象类 1、如果将一个类声明为abstract,此类不能生成对象,只能被继承使用。 2、抽象方法必须存在于抽象类中。 3、抽象类中可以有一般的变量和一般的方法。 4、子类继承抽象类必须实现其中的抽象方法,除非子类为抽象类。 接口与抽象类的区别: 1、接口只能包含抽象方法,抽象类可以包括普通方法。 2、接口只能定义静态常量属性,抽象类既可以定义普通属性,也可以定义静态常量属性。 3、接口不包含构造方法,抽象类里可以包含构造方法。 抽象类不能被实例化,但不代表它不可以有构造函数,抽象类可以有构造函数,以备抽象类扩充。 1、接口是核心,其定义了要做的事情,包含了许多的方法,但是没有定义这些方法应该如何做。 2、如果许多类实现了某个接口,那么每个都要用代码实现那些方法。 3、如果某一些类的实现有共通之处

Java经典试题(一)

大城市里の小女人 提交于 2020-01-26 11:10:27
单选题 1:对成员的访问控制保护最强的是( )。( 2 分) A:public B:缺省 C:private D:protected 答案:C 2:对于临界区代码,必须使用( )关键字来限定。( 2 分) A:private B:protected C:synchronized D:critical 答案:C 3:Thread的方法resume()负责恢复哪些线程的执行?( 2 分) A:通过调用stop()方法而停止的线程。 B:通过调用sleep()方法而停止运行的线程。 C:通过调用wait()方法而停止运行的线程。 D:通过调用suspend()方法而停止运行的线程。 答案:D 4:关于for循环和while循环的说法哪个正确( )。( 2 分) A:while循环能实现的操作,for循环也能实现的 B:while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果 C:两种循环任何时候都可替换,而且循环体、至少被执行一次 D:两种循环结构中都必须有循环体,循环体不能为空 答案:A 5:对成员的访问控制保护最强的是( )。( 2 分) A:public B:缺省 C:private D:protected 答案:C 6:Applet执行( )方法后,进入消亡态。( 2 分) A:start() B:init() C:stop() D:destroy() 答案:D

day12_Object类、常用API

徘徊边缘 提交于 2020-01-26 10:51:49
Object类 概述 java.lang.Object 类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类(包括数组)都可以使用。在对象实例化的时候,最终找的父类就是Object。如果一个类没有特别指定父类, 那么默认则继承自Object类。例如 public class MyClass /*extends Object*/ { // ... } 根据JDK源代码及Object类的API文档,Object类当中包含的方法有11个。今天我们主要学习其中的2个: public String toString() :返回该对象的字符串表示。 public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。 toString方法 方法摘要 public String toString() :返回该对象的字符串表示。 下面我们以代码举例的方式来说明toString方法。首先我们自定义Person类,代码如下 package demo01; public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age

Java 构造器

别等时光非礼了梦想. 提交于 2020-01-26 06:03:47
Java 构造器 构造器是什么? 1.构造器,也称构造方法、构造函数。作用是构造出来一个类的实例,确保对象得到初始化。 2.构造器的格式: 权限修饰符 类名(无参/有参){}。 3.根据有无参数,可分为无参构造 和有参构造。 构造器的特性# 1.与一般方法名不同的是,构造方法名必须和类名保持一致,并且没有返回值。 2.Java编译器会自动创建无参构造函数,因此在类中,无参构造即使没有,我们也可省略不写。实例化对象时无需赋值。 3.倘若类中已存在有参构造函数,则编译器不再提供默认无参构造。实例化对象时需赋值,不然报错。 4.当类实例化一个对象时会自动调用构造方法。 示例代码一:无参构造 学生类 public class Student { //权限修饰符是public,表示内部属性能被其他类访问到。若使用private,则需要set/get才能访问 public String name ; public int age ; //无参构造,编译器自带,可不写。 public Student ( ) { System . out . println ( "括号内无参数,这就是无参构造" ) ; } } 测试类 public class Test { public static void main ( String [ ] args ) { Student st = new Student

Java Date的概述和构造方法

ⅰ亾dé卋堺 提交于 2020-01-25 16:50:58
Date类 java.util 包提供了 Date类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象,其他的已经过时 1、构造方法 第一个构造函数使用当前日期和时间来初始化对象。 Date( ) 第二个构造函数接收一个参数,该参数是从1970年1月1日起的微秒数。 Date(long millisec) 测试代码如下: package cn.wen; import java.util.Date; public class DateDemo { public static void main(String[] args) { // 创建对象 Date d = new Date(); System.out.println("d:" + d); //d:Sun Jan 05 14:47:29 CST 2020 // 创建对象 //long time = System.currentTimeMillis(); //d2:Thu Jan 01 09:00:00 CST 1970 long time = 1000 * 60 * 60; // 1小时 Date d2 = new Date(time); System.out.println("d2:" + d2); //d2:Thu Jan 01 09:00:00 CST 1970(时差为8小时) } } 2

抽象类

。_饼干妹妹 提交于 2020-01-25 16:50:12
抽象类概述 在java中,一个 没有方法体 的方法应该定义为抽象类,而类中如果有抽象方法,该类必须定义为抽象类 抽象类的特点 1、抽象类和抽象方法必须使用 abstract 关键字修饰 public abstract class Student { . . . } public abstract void eat ( ) ; 2、抽象类不一定有抽象方法,有抽象方法的类一定是抽象类 3、抽象类不能实例化 抽象类如何实例化呢? 参照多态的方式,通过子类对象实例化,这叫抽象类多态 4、抽象类的子类 要么重写抽象类中的所有抽象方法 要么是抽象类 抽象类的成员特点 1、成员变量 可以是变量 也可以是常量 2、构造方法 有构造方法,但是不能实例化 构造方法的作用是什么呢? 用于子类访问父类数据的的初始化 3、成员方法 可以有抽象方法: 限定子类必须完成某些动作 也可以有非抽象方法 :提高代码的复用性 来源: CSDN 作者: 0和1的尽头又是啥 链接: https://blog.csdn.net/qq_43205282/article/details/103841531

day09_继承、super、this、抽象类

梦想与她 提交于 2020-01-25 07:00:28
继承 由来 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。如图所示: 其中,多个类可以称为子类,单独那一个类称为父类、超类(superclass)或者基类。 继承描述的是事物之间的所属关系,这种关系是: is-a 的关系 。例如,图中兔子属于食草动物,食草动物属于动物。在继承的关系中,“子类就是一个父类”。也就是说,子类可以被当做父类看待。例如父类是员工,子类是讲师,那么“讲师就是一个员工”。可见,父类更通用,子类更具体。我们通过继承,可以使多种事物之间形成一种关系体系。 继承主要解决的问题是共性抽取。 定义 继承: 就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。 好处 提高代码的复用性。 类与类之间产生了关系, 是多态的前提。 继承的格式 通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下: 继承演示,代码如下: 定义员工类Employee,做父类 package demo01; public class Employee { // 定义name属性 String name; // 定义员工的工作方法 public void work() { System.out.println("尽心尽力地工作"); } }