选择
1.
以下程序运行结果是
class Father{
public static String getName(){
return "Father";
}
}
class Son extends Father{
public static String getName(){
return "Son";
}
}
public class Test{
public static void main(String[] args){
Father father = new Father();
Father son = new Son();
System.out.print(father.getName());
System.out.print(son.getName());
}
}
A
编译报错
B FatherSon
C FatherFather
D
以上都不对
解析: 这里注意static的用法,自行百度理解
2.
java
中的每一个类:
A
只能有一个直接父类
B
可以有多个直接父类
C
只能实现一个接口
D
可以实现多个接口
3.
如果有两个类:A,B
,能表示A
继承自B
的语句是:
A class A extends B
B class B extends A
C class A implements B
D class B implements A
4.
以下哪个定义接口的语句是正确的
A interface B{
void print(){}
}
B abstract interface B{
void print()
}
C abstract interface B extends A1,A2{
abstract void print(){}:
}
D interface B {
void print();
}
简述
1.
Java
中抽象类,接口,各有什么特点?
java中抽象类,接口都不能实例化.
抽象类中可以有抽象方法和非抽象方法,但是接口只能是抽象方法.
抽象类可以有构造方法,但接口中是没有构造方法的.
实现类与抽象类之间是
继承
关系
实现类和接口之间是
实现
关系
2.
定义抽象类时,有哪些不合法的关键字组合?
final static private
3.
Java
中什么是多态?
多态就是父类变量指向不同的子类实例,调用不同的方法时,会产生不同的结果.
多态前提:
子父类,或者是实现关系
方法的重写或者实现
编程
1.
定义一个接口,Play--
播放,含有一个抽象方法play
,凡是具有播放行为的类都应该实现该接口,
比如:Mp3
播放器实现了该接口,可以播放音乐;
数码相机实现了该接口,可以播放图片
package com.oldboy_01;
//自定义Play接口,并定义play抽象方法
interface Play{
public abstract void play();
}
//实现Mp3接口
class Mp3 implements Play{
public void play(){
System.out.println("Mp3可以播放音乐");
}
}
class Camera implements Play{
public void play(){
System.out.println("Camera可以播放图片");
}
}
public class Day10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建对象
Play p = new Mp3();
p.play();
//第一种方法
// Play p1 = new Camera();
// p1.play();
//或者采用第二种方法
p = new Camera();
p.play();
}
}
2.
定义一个抽象类:Phone
类,其中有一个抽象方法Call
,表示打电话的抽象方法;
它有两个实现子类:FixedPhone
,表示固定电话;CellPhone
,表示手机
定义一个接口PlayGame
,表示可以玩游戏,其中有一个抽象方法:play
定义一个NewPhone
类,继承自CellPhone
,实现PlayGame
接口,在测试类中测试newPhone
类对象的功能
package com.oldboy_01;
//定义含有抽象方法call的抽象类
abstract class Phone{
public abstract void call(String name);
}
//定义含有抽象方法play的抽象接口
interface PlayGame{
public abstract void play();
}
//定义FixedPhone实现子类
class FixedPhone extends Phone{
public void call(String name){
System.out.println("给" + name + "打电话");
}
}
//定义CellPhone实现子类
class CellPhone extends Phone{
public void call(String name){
System.out.println("给" + name + "打电话");
}
}
//定义继承CellPhone的NewPhone的类
class NewPhone extends CellPhone implements PlayGame{
//对PlayGame接口中的play方法重写
public void play(){
System.out.println("可以用来玩游戏");
}
}
//自定义测试类
public class PhoneDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
//抽象类多态
Phone p = new FixedPhone();
p.call("倪玲");
p = new CellPhone();
p.call("徐子沫");
p = new NewPhone();
p.call("BOSS");
//接口多态
PlayGame pg = new NewPhone();
pg.play();
}
}
3.
考察:接口多态
某企业招聘员工,最基本条件包括:一,会C
语言;二,会Java
语言
使用面向对象和接口的知识模拟面试官招聘的过程,符合条件者打印“首轮面试合格,进入下一轮面试”
提示:面试官有一个面试方法,里面的参数是一个接口的名称,凡是实现了这个接口的实现类对象都可以被当成参数传递给这个方法
//使用匿名方法
package com.oldboy_01;
interface Employee{
public abstract void write_c();
public abstract void write_java();
}
class HR{
public void interview(Employee e){
e.write_c();
e.write_java();
System.out.println("首轮面试合格,进入下一轮面试");
}
}
public class EmployeeDemo {
public static void main(String[] args) {
new HR().interview(new Employee() {
@Override
public void write_java() {
// TODO Auto-generated method stub
System.out.println("会java编程");
}
@Override
public void write_c() {
// TODO Auto-generated method stub
System.out.println("会c编程");
}
});
}
}
//使用一般方法
package com.oldboy_01;
interface Employee{
public abstract void write_c();
public abstract void write_java();
}
class HR{
public void interview(Employee e){
e.write_c();
e.write_java();
System.out.println("首轮面试合格,进入下一轮面试");
}
}
class Programmer implements Employee{
public void write_c(){
System.out.println("会用c编程");
}
public void write_java(){
System.out.println("会用java编程");
}
}
public class EmployeeDemo {
public static void main(String[] args) {
Programmer p = new Programmer();
new HR().interview(p);
}
}