构造方法

day21 继承

你说的曾经没有我的故事 提交于 2019-12-01 04:59:46
目录 day21 继承 今日内容 昨日回顾 今日内容详细 一对多的组合关系 继承(实现)关系 day21 继承 今日内容 一对多的组合关系 继承(实现)关系 单继承 多继承 super 昨日回顾 OOA、OOD和OOP 类之间的关系 依赖(关联)关系 组合(聚合)关系 继承(实现)关系 依赖(关联)关系 将一个类的对象或类名传给另一个类的方法使用 删除示例属性的方法 delattr del 对象名.属性名 组合(聚合)关系 将一个类的对象整体作为另一个类的属性 今日内容详细 一对多的组合关系 同一对一的组合关系类似,我们可以将多个类的对象封装为另一个类的属性,具体示例为: # 有一个男孩类和一个女孩类,男孩类中包含多个女孩类的对象 class Boy: def __init__(self, name): self.name = name self.girl_f = [] def ba_mei(self, girl): self.girl_f.append(girl) def happy(self): for i in self.girl_f: i.play() class Girl: def __init__(self, name): self.name = name def play(self): print(f'{self.name}陪你一起玩~o(=•ェ•=)m')

JavaOO试题

巧了我就是萌 提交于 2019-12-01 04:55:48
下列不属于 Java运行环境要执行的工作是( A ) A. 从 Java源文件编译成字节码文件 B. 字节码校验 C. 解释执行 D. 类加载 编译是在运行环境外执行的 在JDK1.8中,switch(expr1)中,expr1不可以是如下哪个类型(D ) byteB. short C. char D. long E. int F. String Switch中只能填整形和字符、字符串,long转换为int会丢失精度 下面哪一个是合法的自定义Java标识符(B) –hello B._String$123 C. return D. 38Test 自定义标识符只能由字母、数字、美元符、下划线组成,不能以数字开头,不能是关键字或true、false、null 4、以下不属于Java基本数据类型的有(C) A. long B. float C. String D. char E. double String 是引用数据类型 5、有一个Hello.java的文件,内容如下(D ) class Test { publicstaticvoid main ( String [] args ){ System . out . println ( "abc" ); } } 正确编译并执行的命令是() javac Hello.java java Hello javac Hello.java java

javaOO上册——考试题

风流意气都作罢 提交于 2019-12-01 04:55:33
JavaOO阶段性考核测试试题 注:本测试试题共计50道单项选择题,每题2分,共计100分,答题时间120分钟 A:90~100分 B+:80~90分 B:70~80分 B-:60-70分 C:50-60分 D:50分以下 下列不属于Java运行环境要执行的工作是( ) A. 从Java源文件编译成字节码文件 B. 字节码校验 C.解释执行 D. 类加载 在JDK1.8中,switch(expr1)中,expr1不可以是如下哪个类型( ) byte B. short C. char D. long E. int F. String 下面哪一个是合法的自定义Java标识符( ) –hello B. _String$123 C. return D. 38Test 4、以下不属于Java基本数据类型的有( ) A. long B. float C. String D. char E. double 5、有一个Hello.java的文件,内容如下( ) class Test { public static void main ( String [] args ){ System . out . println ( "abc" ); } } 正确编译并执行的命令是() javac Hello.java java Hello javac Hello.java java Hello.class

15、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

ぐ巨炮叔叔 提交于 2019-12-01 04:49:44
接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类中可以有静态的main方法。 问: 抽象类是否可继承实体类 (concrete class) 答: 抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数。 答案很明确,可以继承。其实从Object就是个实体类, Java 的API文档里,每个抽象类的条目里都明确写着直接或间接继承自Object,所以这点是没有疑问的。 关键在于这答案里所说的“前提是实体类必须有明确的构造函数”一句,是什么意思。 一般学习者会写的简单试验代码: class A{} abstract class B extends A{} 结果完全正常,编译通过。似乎和“实体类必须有明确的构造函数”完全没有关系。 这个问题涉及到两个个基础知识: 1. 所有的class都必须有一个构造方法,如果你没有在代码里声明构造方法,系统会自动给你生成一个公有无参的构造方法。而只要你自己声明了一个构造方法,无论有参无参,私有公有,系统就不再帮你生成默认无参构造器了。 2.所有的子类构造器都要求在第一行代码中调用父类构造器,如果不写,系统默认去调用父类的无参构造器。 所以,如果把系统默认配给的方法也算进去,class A{}的代码实际上是 class A{ public A(){} } B继承 A 的时候,则是 abstract class

三、面向对象(高琪java300集+java从入门到精通笔记)

二次信任 提交于 2019-12-01 02:58:25
面向对象基础: 对象的进化史 基本数据类型阶段 数据少 无数据管理时代 数组 数据多了,将同类型的数据放到一起 弱管理 结构体 数据多了,数据复杂了。将不同类型的数据放到一起 强管理 对象 数据多了、类型复杂了、行为复杂了。将不同类型的数据放到一起 超强管理 前三个:面向过程 数据和行为是分开的 行为去组织数据 最后一个:面向对象 通过对象组织数据 对象和类: 对象是具体的,类是抽象的(类是对对象的共性的总结)。类也是一个模版,通过类这个模版我们也可以new对象。 对象分为两部分: 静态部分:属性→成员变量 动态部分:行为→方法 类是封装了对象的属性和行为的载体 定义类: public class 类名 { //属性 private(建议) 数据类型 属性名; //建议增加相应的getter、setter方法 //方法 (往往是对上面数据的操作,建议static修饰,方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的 方法的调用方式: 对象名.方法名(实参列表) return 语句终止方法的运行并指定要返回的数据 Java中进行方法调用中传递参数时,遵循值传递的原则(传递的都是数据的副本): 基本类型传递的是该数据值的copy值。 引用类型传递的是该对象引用的copy值

Java基础学习笔记(五) - 常用的API

╄→гoц情女王★ 提交于 2019-12-01 02:58:16
API介绍 概念:API 即应用编程程序接口。Java API是JDK中提供给我们使用的类说明文档,这些类将底层的代码实现封装。无需关心这些类是如何实现,只需要学习如何使用。 使用:通过API找到需要使用的类,学习使用构造方法和成员方法。(创建对象,调用即可) 一、Scanner类 功能:解析基本类型和字符串的简单文本扫描器。 构造方法:无参构造 Scanner,生成的值是从指定输入流扫描的。 成员方法: nextInt 方法会将输入信息记录为int类型。 import java.util.Scanner; //导包 public class TestScanner { public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("正在录入数据:"); int a = sc.nextInt(); System.out.println(a); } } System.in 表示通过键盘录入数据,然后使用 Scanner类的 nextInt 方法获取输入数据。 使用导包:使用 import 关键字,引入包中的类。java.lang 包下的类无需导入。 二、Random类 功能:生成伪随机数。 构造方法:无参构造随机数生成器。 成员方法: nextInt 方法

速学堂 JAVA300 第四章练习

烂漫一生 提交于 2019-12-01 02:52:29
速学堂 JAVA300 第四章练习 一、选择题 1.以下语句中关于Java构造方法的说法错误的是( B )。(选择一项)   A.构造方法的作用是为创建对象进行初始化工作,比如给成员变量赋值   B.一个Java类可以没有构造方法,也可以提供1个或多个构造方法   C.构造方法与类同名,不能书写返回值类型   D.构造方法的第一条语句如果是super(),则可以省略,该语句作用是调用父类无参数的构造方法      2.在Java中,以下程序编译运行后的输出结果为( D )。(选择一项) 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、C )。(选择二项)   A.静态方法中不能直接调用非静态方法   B.非静态方法中不能直接调用静态方法   C.静态方法可以用类名直接调用   D.静态方法里可以使用this

JAVA多态抽象类接口学习

时光毁灭记忆、已成空白 提交于 2019-12-01 02:45:41
面向对象多态 多态的概念 多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定。Java 对于方法调用动态绑定的实现主要依赖于方法表,但通过类引用调用(invokevitual)和接口引用调用(invokeinterface)的实现则有所不同。 参考链接来自 https://www.cnblogs.com/kaleidoscope/p/9790766.html 多态中的成员访问特点 多态中用于变量 编译看左边、运行看左边。 多态用于方法(普通方法) 编译看左,运行看右。 多态用于静态方法 编译看左,运行看左 多态问题 不能使用子类特有的功能 解决办法就是使用向上转型和向下转型(强转)的办法。 抽象类的概念 抽象类在现实生活中没有实体。但是在代码中可以封装共性而且还避免了直接初始化。 抽象类成员特点 成员变量:既可以是变量,也可以是常量。 构造方法: 有构造方法 但是不能直接初始化,可以使用子类初始化和子类多态初始化。 成员方法:可以使抽象的,也可以是非抽象的。 抽象方法:强制要求子类做的事情(重写)。 abstract 在修饰方法时不能和哪些关键字共存 private 冲突 final 冲突 static 冲突 接口 接口个人认为是一个没有构造方法的类,可以继承。可以有成员变量和方法。 接口的成员特点 成员变量:只能是常量

继承内部类时使用外部类对象.super()调用内部类的构造方法

偶尔善良 提交于 2019-12-01 02:13:14
问题简介    今天在看《Java编程思想》的时候,看到了一个很特殊的语法,懵逼了半天——一个派生类继承自一个内部类,想要创建这个派生类的对象,首先得创建其父类的对象,也就是这个内部类,而调用内部类的构造方法创建其对象的语法,是 外部类对象.super(); 问题分析    我们都知道,在Java当中,当我们创建一个类的对象时,在构造方法的第一行会默认的调用父类的构造方法,创建一个父类的对象,并用super关键字引用父类的对象。所以若一个类,它继承了一个内部类,那我们创建这个类的对象前,当然也必须创建一个其父类的对象,也就是这个内部类的对象。    但是,麻烦的是,对于内部类来说,有一个规则,那就是每个内部类的对象, 必定要绑定一个其外部类的对象 ,这就是在内部类中,能够调用外部类方法和操作外部类属性的原因。在我们平时创建内部类对象的时候,首先需要创建一个外部类对象,在使用 外部类对象.new 内部类() 语法来创建内部类对象,这时候内部类对象绑定的就是创建它的外部类对象。    所以,当我们有一个类,它继承自一个内部类的时,我们要创建它的对象,需要满足两个条件: 在创建对象前,要先创建好它的父类对象,也就是它继承的内部类对象; 想要创建内部类对象,你得先有这个内部类的外部类对象,以供他绑定;    于是出现了下面这种让人懵逼的代码: 代码案例 // 外部类 class Outer

重载构造方法

♀尐吖头ヾ 提交于 2019-12-01 01:59:10
当通过new语句创建一个对象时,在不同的条件下,对象可能会有不同的初始化行为。例如对于公司新进来的一个雇员,在一开始的时候,有可能他的姓名和年龄是未知的,也有可能仅仅他的姓名是已知的,也有可能姓名和年龄都是已知的。如果姓名是未知的,就暂且把姓名设为"无名氏",如果年龄是未知的,就暂且把年龄设为-1。 可通过重载构造方法来表达对象的多种初始化行为。以下例程的Employee类的构造方法有三种重载形式。在一个类的多个构造方法中,可能会出现一些重复操作。为了提高代码的可重用性,Java语言允许在一个构造方法中,用this语句来调用另一个构造方法。 例程 Employee.java public class Employee { private String name; private int age; /** 当雇员的姓名和年龄都已知,就调用此构造方法 */ public Employee(String name, int age) { this.name = name; this.age=age; } /** 当雇员的姓名已知而年龄未知,就调用此构造方法 */ public Employee(String name) { this(name, -1); } /** 当雇员的姓名和年龄都未知,就调用此构造方法 */ public Employee() { this( "无名氏" ); }