10.21/22作业

来源:互联网 发布:火炬之光2mac 编辑:程序博客网 时间:2024/05/29 05:05
day08
1:教练和运动员案例(学生分析然后讲解)
乒乓球运动员和篮球运动员。
乒乓球教练和篮球教练。
为了出国交流,跟乒乓球相关的人员都需要学习英语。
请用所学知识:
分析,这个案例中有哪些抽象类,哪些接口,哪些具体类
 
package org.lemon.Test;
public interface StudyEnglish {
   public static void main(String[] args) {
 StudyEnglishPingPangCoach seppc = new StudyEnglishPingPangCoach();
 seppc = new StudyEnglishPingPangCoach("张三", 40) ;
 System.out.println(seppc.getName()+"---"+seppc.getAge());
 seppc.exerise() ;
 seppc.run() ;
 seppc.play() ;
 seppc.playGame() ;
 StudyEnglishPingPangAthlete seppa = new StudyEnglishPingPangAthlete(); 
 seppa = new StudyEnglishPingPangAthlete("李四", 20) ;
 System.out.println(seppa.getName()+"---"+seppa.getAge());
 seppa.exerise() ;
 seppa.run() ;
 seppa.play() ;
 seppa.playGame() ;
   }
}

2:final关键字可以干什么?有什么特点?
   final如果修饰一个类,该类不能被继承.  final修饰类的成员变量该成员变量的值不可修改。
3:final关键字的面试题?
 A:修饰局部变量    基本数据类型:如果局部变量是一个基本数据类型,那么被final修饰,基本数据类型的变量的值不能再改变!
       引用数据类型:如果用final修饰引用类型的变量,那么它不能在重写分配堆内存空间,但是可以改变可以成员变量的值.
 B:初始化时机   在对象创建之前都可以.
                      a.构造代码块中可以进行初始化
                      b.构造方法中可以进行初始化
                      c.定义成员变量的时候,可以直接进行初始化.
 
4:多态是什么,前提是什么?
  多态:一个事物在不同时刻体现出来的不同状态  条件1:必须有继承关系(如果没有继承关系,谈不上多态!)
                                条件2:必须有方法重写子类出现了父类一样的 方法声明
                                条件3:有父类引用指向子类对象:向上转型  Fu f = new Zi() ;
   
5:多态中成员访问的特点?
 成员变量 :  编译看左边,运行看左边     
 成员方法 :  编译看左,运行看右;由于存在方法重写,所以就运行最终的就是子类的成员方法
 静态方法 :  (静态方法算不上方法重写,静态直接跟类有关系!) 编译看左,运行看左
6:多态的好处及弊端?如何解决多态的弊端?
  1)提高代码的维护性(由继承保证)     多态的弊端: 不能访问子类的特有功能  
  2)提高代码的扩展性(由多态保证)  
(1)创建子类的具体对象,来访问自己的特有功能;虽然可以解决多态的弊端,但是从内存角度考虑,需要创建子类对象,那么必须在堆内存开辟空间,
  耗费内存,浪费空间       
(2)既然多态的第三个前提条件:父类引用指向子类对象, 那么子类的引用也可以指向父类对象
        
7:什么是向上转型?什么是向下转型?
  向上转型:由父类引用指向子类对象
  向下转型:将父类的引用强制转换为子类的引用:前提必须有父类的引用存在;且向下转型必须依赖于向上转型!
 
8:抽象类概述及其特点?
    每个行为的功能不同。所以不能定义为一个类,而是给出 abstract   例如动物类、
    抽象类不能实例化:抽象类不能创建对象
9:抽象类成员特点?
     用public  static  final 修饰  成员变量可以是常量,也可以是变量
10:抽象类的小问题
  A:一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
 可以的 一个抽象类可以包含抽象和非抽象方法
  B:abstract不能和哪些关键字共存
       private  final
11:接口的概述及其特点?
    扩展一些独特的功能   永远被public修饰,没有构造方法,不能实例化 
12:接口的成员特点?
      成员变量只能是一常量:存在默认修饰符:public static final
13:抽象类和接口的区别?
  接口的方法都是抽象的,而抽象类可以包含 抽象方法和非抽象方法
构造方法:
  抽象类:可以有无参构造,有参构造方法     可以有抽象方法,也可以有非抽象方法
   {通过子类进行数据初始化(通过子类创建对象)}
  接口:没有构造方法的    只能是抽象方法:存在默认修饰符:public abstract
  类:继承关系:extends,java中只支持单继承,不支持多继承,但是可以多层继承!
  接口:继承关系:extends,可以支持单继承,也可以多继承!



day09

1:博客自己总结这两天学的东西
2:形式参数和返回值问题
 形式参数
  基本类型形式参数的改变对实际参数没有影响(String是引用类型和基本数据类型的效果一样String s ="abc")
如果形式参数是引用类型:
 具体类类:如果形式参数是一个具体类,那么需要创建该类对象
 抽象类:如果形式参数是抽象类的情况,那么需要自定义一个抽象类的子类,来进行实例化(创建对象)!,创建对象的实质:  抽象类多态!
 接口:那么需要自定义一个接口的子实现类,然后通过接口多态的形式给接口进行实例化!(接口多态!
由于接口不能实例化,需要定义接口的子实现类)
 
 返回值:
  具体类:直接返回该类对象(通常实际开发中使用的是匿名对象)
  抽象类:返回值如果是抽象类,需要的返回是该抽象类的子类对象
 接口:返回值如果是接口类型,需要的是返回该接口的子实现类对象(通过子实现类进行实例化!)

3:内部类的概述及访问特点
   在一个类中定义另一个类;
   内部类可直接访问外部类成员,且包括私有
4:内部类的分类
 (1)成员内部类: 在外部类的成员位置定义
 (2)局部内部类: 在外部类的局部位置定义
5:匿名内部类的格式和应用及面试题
   (必须存在一个接口或者一个类)格式:new 接口名或者类名(){
                                            @Override 方法重写
   
面试题:匿名内部类面试题:
  按照要求,补齐代码
   interface Inter { void show(); }
   class Outer { //补齐代码 }
   class OuterDemo {
    public static void main(String[] args) {
       Outer.method().show();
      }
   }
   要求在控制台输出”HelloWorld”
                                                   }

//接口
interface Inter{
 void show() ;
 public abstract void show() ;
}
class Outer{
 public static Inter2  method(){  //返回值是一个接口
  return new Inter2(){
   @Override
   public void show() {
    System.out.println("helloworld");
   }
  } ;
 }
}
//测试类
public class InnerClassTest2 {
 public static void main(String[] args) {
   Outer.method().show();



原创粉丝点击