继承性

java类是否可以多继承,怎么实现多继承?

答:java没有多继承,但可以通过接口的形式来达到多继承的目地。

继承练习

定义类A 和类B 如下:
class A {int a = 1;double d = 2.0;void show() {System.out.println("Class A: a=" + a + "\td=" + d);}
}class B extends A {float a = 3.0f;String d = "Java program.";void show() {super.show();System.out.println("Class B: a=" + a + "\td=" + d);}
}(1) 若在应用程序的main 方法中有以下语句:
A a=new A();
a.show();
则输出的结果如何?
(2) 若在应用程序的main 方法中定义类B 的对象b:
A b=new B();
b.show();
则输出的结果如何?

答:

1)Class A: a=1 d=2.0
2)Class A: a=1 d=2.0
Class B: a=3.0 d=Java program。

重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?

答:

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。

Overload的方法是否可以改变返回值的类型?

答:

Overloaded的方法是可以改变返回值的类型

写出错误答案错误的原因

class Demo{
int show(int a,int b){return 0;}
}
下面那些函数可以存在于Demo的子类中。
A.public int show(int a,int b){return 0;}
B.private int show(int a,int b){return 0;}
C.private int show(int a,long b){return 0;}
D.public short show(int a,int b){return 0;}
E.static int show(int a,int b){return 0;}

答:

A.public int show(int a,int b){return 0;}
//可以,覆盖。
B.private int show(int a,int b){return 0;}
//不可以,权限不够覆盖。
C.private int show(int a,long b){return 0;}
//可以,和父类不是一个函数。没有覆盖,相当于重载。
D.public short show(int a,int b){return 0;}
//不可以,因为该函数不可以和给定函数出现在同一类中,或者子父类中。
E.static int show(int a,int b){return 0;}
//不可以,静态只能覆盖静态。

写出程序结果

class Super {public int get() {return 4;}
}class Demo15 extends Super {public long get() {return 5;}public static void main(String[] args) {Super s = new Demo15();System.out.println(s.get());}
}

答:

编译失败,因为子类父类中的get方法没有覆盖。所以子类调用时候不能明确返回的值是什么类型。
所以这样的函数不可以存在子父类中。

按要求实现下列问题:实现一个名为Person的类和它的子类Employee,Employee有两个子类Faculty和Staff。具体要求如下:

1)Person类中的属性有:姓名name(String类型),地址address(String类型),
电话号码telphone(String类型)和电子邮件地址email(String类型);
2)Employee类中的属性有:办公室office(String类型),工资wage(double
类型),受雇日期hiredate(String类型);
3)Faculty类中的属性有:学位degree(String类型),级别level(String类型);
4)Staff类中的属性有:职务称号duty(String类型)。
5)现有对象Person p1 =new Faculty()和Person p2 =new Staff (),请分别为p1的属性赋值“本科”和Staff类的duty赋值“职员”
pass

Object类的使用说明

我比较两个String总是false,但是它们明明都是"abc" !

答:比较String一定要使用equals或equalsIgnoreCase方法,不要使用 ==  ==比较的是两个引用(变量)是否指向了同一个对象,而不是比较其内容。

为什么要重写toString()方法?

[Java] 为什么要重写toString方法?如何写?

为什么要重写equals()方法?

待补

定义一个person类,属性如下:

(1)身份证号,性别,姓名,年龄,户籍,出生日期(Data类型,需要引用java.uitl.Data)功能:

(2)自我介绍:介绍格式:(toString)

身份证号+姓名+户籍

(3)提供对象比较equals方法,只要身份证号+姓名相同就认为对象相等

package pratice;
import java.util.Date;
public class people {protected String id;protected String name;protected String sex;protected int age;protected String place;protected String birthday;public people() {}public String toString(){System.out.println("id:"+id+" name:"+name+" place:"+place);return "";}public boolean equals(people p){if (this.id==p.id&&this.name==p.name)return true;return  false;}public static void main(String[] args) {}
}

写出“==”和equals的区别

== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。
equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:
情况1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。
情况2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来比较两个对象的内容是否相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。
以下代码如何优化
if(username.equals(“admin”){....
}
答案:
if(“admin”.equals(username)){
}

创建一个汽车类(Car)

(1)为其定义两个属性:颜色和型号。每个属性都使用private进行封装,为每个属性设置set、get方法。
(2)为该类创建两个构造方法。第一个为无参的构造方法。第二个为带参构造方法
(3)重写toString方法,通过toString输出汽车信息。
(4)重写equals方法,如果汽车的颜色和型号相同就认为是同一辆车。
(5)实例化两个对象,输出两个对象的信息,比较两个对象是否是同一个对象。
pass

编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。

(1)每个类都有构造方法进行属性初识化

(2)每个类都输出相关数据的toString方法

(3)使用Test类中的main方法定义各类初始化数据后台打印相关数据

pass

定义员工类Employee,包含姓名、工号和工资,包含计算奖金方法bonus,普通员工和经理都是员工,计算奖金的方法为工资*奖金系数,普通员工的奖金系数为1.5(常量),经理为2(常量),分别实现bonus方法,创建对象测试。

定义一个交通工具类,并定义抽象方法,说明交通工具可以移动。继承交通工具而产生汽车、飞机、轮船类,并实现其移动方法。

equals()编程1:

(1)编写一个人类Person,其中包含姓名、性别和年龄的属性,包含构造方法以及显示姓名、性别和年龄的方法。(10分)

(2)再编写一个学生类Student,它继承Person类,其中包含学号属性,包含构造方法以及显示学号的方法。(10分)

(3)在Student类里面重写equals方法,只要是学号和姓名一致就认为是同一个学生。(20分)

(4)最后编写一个测试类,此类里面包含main()方法,在main()方法中定义两个学生s1和s2并给他们赋值,最后显示他们的学号、姓名、性别以及年龄,以及判断两个学生是否是同一个学生。(10分)

pass

按要求实现下列问题:

1)封装一个西游记人物类Person:包含私有属性:姓名(name)、身高(height)、武器(weapon)、种族(race),并提供访问器(get方法)和修改器(set方法)

  1. 在测试类中实例化三个对象:tangseng(唐僧)、sunwukong(孙悟空)、baigujing(白骨精),分别设置他们的种族为:人族、仙族、妖族
  2. 在打印对象时,按照例如:“姓名:孙悟空;种族:仙族”的格式在控制台输出信息。
  3. 提供一个技能方法void skill(),这个方法根据当前对象name属性判断技能,如果是孙悟空,就打印“七十二变”,如果是唐僧,就打印“紧箍咒”,如果是白骨精,就打印“九阴白骨爪”,在测试类中调用这个方法。
  4. 重写equals方法进行判断,如果种族属性是人族或者仙族,则返回true,如果是妖族,则返回false,在测试类中对孙悟空和唐僧进行比较,打印结果,对唐僧和白骨金进行比较,并打印结果.
    pass

包装类的使用

写出8中基本数据类型的包装类

Byte Short Integer Long Float Double Boolean Character

int 和 Integer 有什么区别

答:Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。
int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。
原始类型封装类型及其对应的包装类:boolean Boolean,char Character,byte Byte,short Short,int Integer,long Long,float  Float,doubl  Double
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。
引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。

请写出java基本数据类型及对应的封装类型,并说明封装类的作用。

JAVA基本数据类型及其对应的包装类

以下代码的运行结果是:

 public static void main(String[] args) {Integer i1 = 128;Integer i2 = 128;int i3 = 128;int i4 = 128;System.out.println(i1 == i2);System.out.println(i3 == i4);System.out.println(i1 == i3);}
答案:
false
true
trueInteger的i1和i2是对象,他们==比较的是地址。如果-128~127范围,那么使用缓存的常量对象,如果超过这个范围,是新new的对象,不是常量对象总结:
Integer i1=127;
Integer i2=127;
在i1=i2=127时,i1==i2为true
在i1=i2=128的时候是falseint i1=128;
Integer i2=128;
无论值是多少 i1==i2都是trueInteger i1=2;
Integer i2=new Integer(2);
无论值是多少 i1==i2都是false  因为是对象的比较,地址不同

以下代码的运行结果

 public static void main(String[] args) {double a = 2.0;double b = 2.0;Double c = 2.0;Double d = 2.0;System.out.println(a == b);System.out.println(c == d);System.out.println(a == d);}
答案:
true
false
true

super关键字

写出程序结果

class Test {Test() {System.out.println("Test");}
}class Demo extends Test {Demo() {// super();System.out.println("Demo");}public static void main(String[] args) {new Demo();new Test();}
}
答:Test
Demo
Test

写出程序结果

class Super {int i = 0;public Super(String a) {System.out.println("A");i = 1;}public Super() {System.out.println("B");i += 2;}
}class Demo extends Super {public Demo(String a) {// super();System.out.println("C");i = 5;}public static void main(String[] args) {int i = 4;Super d = new Demo("A");System.out.println(d.i);}
}
答:
B
C
5

写出程序结果

class Super {int i = 0;public Super(String s) {i = 1;}
}class Demo extends Super {public Demo(String s) {i = 2;}public static void main(String[] args) {Demo d = new Demo("yes");System.out.println(d.i);}
}
//编译失败,因为父类中缺少空参数的构造器。
//或者子类应该通过super语句指定要调用的父类中的构造器。

写出程序结果

package test;
public class  FatherClass{public FatherClass(){System.out.println("FatherClass Create");}
}
子类:
package test;
import test.FatherClass;
public class  ChildClass extends FatherClass{public ChildClass(){System.out.println("ChildClass Create");}public static void main(String[] args) {FatherClass fc = new FatherClass();ChildClass cc = new ChildClass();}
}
当执行如下操作
C:\>java test.ChildClass
输出结果为:
FatherClass Create
FatherClass Create
ChildClass Create 

以下代码的运行结果:

public class Test {public static void main(String[] args) {Base b1 = new Base();Base b2 = new Sub();}
}
class Base{Base(){method(100);}public void method(int i){System.out.println("base : " + i);}
}
class Sub extends Base{Sub(){super.method(70);}public void method(int j){System.out.println("sub : " + j);}
}
答案:
base : 100
sub : 100
base : 70

编程

1. 编写一个Person类,包括属性(name、age),构造器、方法say(返回自我介绍的字符串)。
2. 编写一个Student类,继承Person类,增加ID、score属性,以及构造器,并覆盖say方法。
3. 编写StudentTest类,创建分别Person和Student对象,调用say方法输出自我介绍。
pass

多态性

写出程序结果

class A {private int a;public void setA(int a) {this.a = a;}public int getA() {return a;}
}class B extends A {private int a;public void setA(int a) {this.a = a;}// public int getA(){// return a;// }
}public class PersonTest {public static void main(String[] args) {A c = new B();c.setA(5);System.out.println(c.getA());}
}
答:0

写出程序结果

class Fu {boolean show(char a) {System.out.println(a);return true;}
}class Demo extends Fu {public static void main(String[] args) {int i = 0;Fu f = new Demo();Demo d = new Demo();for (f.show('A'); f.show('B') && (i < 2); f.show('C')) {i++;d.show('D');}}boolean show(char a) {System.out.println(a);return false;}
}
A B

写出程序结果

class Fu {int num = 4;void show() {System.out.println("showFu");}
}class Zi extends Fu {int num = 5;void show() {System.out.println("showZi");}
}class T {public static void main(String[] args) {Fu f = new Zi();Zi z = new Zi();System.out.println(f.num);System.out.println(z.num);f.show();z.show();}
}
答:
4
5
showZi
showZi

面向对象(中) 章节练习题及面试题相关推荐

  1. 面向对象(上) 章节练习题及面试题

    类的实例化 代码实现 编写一个Student类,包含name.gender.age.id.score属性,分别为String.String.int.int.double类型. 类中声明一个say方法, ...

  2. 面向对象(高级)章节练习题

    //练习题1:输出:9.0 red // 100.0 red public class hello {public static void main(String[] args) {Car C =ne ...

  3. java 练习-多线程 章节练习题及面试题

    java中有几种方法可以实现一个线程(jdk5.0之前)?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 答:有两种实现方法,分别是继承Thread类与实现Runna ...

  4. java 练习--java常用类 章节练习题及面试题

    判断输出结果 public void testString(){String str1 = "尚硅谷";String str2 = "尚硅谷";String s ...

  5. 在计算机领域中通常用bips来描述,9月计算机一级MsOffice考试章节练习题

    2017年9月计算机一级考试将于9月23日-26日进行,为帮助考生们复习备考,以下是百分网小编搜索整理的一份9月计算机一级MsOffice考试章节练习题,供参考练习. 1[单选题] 下列设备组中,完全 ...

  6. 2014年9月计算机二级mysql真题_2017年9月全国计算机二级MySQL考试章节练习题

    2017年9月全国计算机二级MySQL考试章节练习题 计算机二级考试成绩在"及格",即60~89分者,由教育部考试中心发合格证书,考试成绩在"优秀",即90~1 ...

  7. 2019年3月计算机ms二级考试题库,2019年3月全国计算机二级MSOffice章节练习题(2).doc...

    2019年3月全国计算机二级MSOffice章节练习题(2).doc (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 1[单选题] ...

  8. java面向对象上机题库_Java面向对象编程上机-练习题汇总

    Java面向对象编程上机-练习题汇总 [练习题1]类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100.定义一个类,对A类的成员变量v进行猜.如果大了则提示大了,小了则提示小了.等于 ...

  9. Java从入门到精通章节练习题——第六章

    Java从入门到精通章节练习题--第六章 Exercise 1 简易计算器 Exercise 2 购买电影票 Exercise 3 计算平均分 Exercise 4 厘米与英寸互转 Exercise ...

最新文章

  1. 资料分享:数学建模资料分享 -- 神经网络部分
  2. Transformer与BERT浅说
  3. XML序列化和反序列化(C#)
  4. AOC的显示器真的很烂
  5. Spring 更好地处理 Struts 动作
  6. [COGS 622] [NOIP2011] 玛雅游戏 模拟
  7. 深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法
  8. 技术能力和工作能力的联系和区别
  9. 2层,3层,4层交换机的区别与特点
  10. 密西西比河谷州立大学:Android应用程序开发(二)
  11. 面对疫情,健身俱乐部管理者最应该做的6件事
  12. 当系统logoff或shutdown时,让应用程序正常关闭
  13. java开发中购物车问题,困扰一天的购物车有关问题
  14. 谷粒商城三阶段课件_北京版初中化学九年级上册第三节 氧气的性质公开课优质课课件教案视频...
  15. DBlink 入门案例
  16. c语言链表增加新节点,C语言 链表的创建,以及节点的增加和删除
  17. iOS 越狱开发那些事儿之二
  18. MySQL报错: SQLSTATE[HY000]: General error: 1030 Got error 28 from storage engine
  19. Rot.js 随机地牢,迷宫地图生成
  20. 双硬盘RAID 0全攻略

热门文章

  1. MFC绘图小实验(1)
  2. 第三章 BIRT数据源的配置
  3. iframe常见问题详解
  4. 用dos命令查看计算机E盘,用DOS命令获取文件列表
  5. matlab编写随机数程序,【matlab编程】matlab随机数函数
  6. Hudi学习02 -- Hudi核心概念
  7. 高层次人才一站式服务平台系统解决方案,人才综合服务平台搭建
  8. 微信小程序新闻(文章)发布系统前后台完整代码
  9. 微信小程序自定义导航栏navigationBar
  10. 坑爹的Linux搜狗输入法的皮肤问题,实测可行!!!