zoukankan      html  css  js  c++  java
  • 2016.9.14小结

    1、instanceof作用是什么?
    用于判断运行时对象的真正类型,若真正类型为null则返回false
    2、什么是抽象方法?什么是抽象类?
    一个类中,只有方法的定义,没有方法的具体实现。那么该方法就称为抽象方法,而拥有抽象方法的类叫做抽象类。

    3、接口如何定义?接口如何实现?实现一个接口必须要做什么?
    将类中的方法抽取出来形成接口。接口是一种抽象行为,可以看做是抽象类的特例。抽象类中可以有抽象方法,也可以有具体的方法,但是接口中只能有抽象方法,定义接口用interface,实现接口用implement
    4、接口中的方法修饰符是什么?接口中的变量修饰符是什么?
    接口中的方法都是抽象方法,修饰符为public abstract,即使缺省,也是公共的抽象方法。接口中变量的修饰符为public static final
    5、接口和抽象类的区别是什么?
    一、抽象类和接口都不能实例化;二、抽象类中可以有抽象方法,也可以有具体方法,但接口中只能有抽象方法;三、抽象类中定义的变量是普通属性,但是接口中定义的变量是公共的静态的常量;四、一个类只能继承一个抽象类,但可以实现多个接口。
    6、什么时候使用继承?什么时候使用接口?
    当子类需要拥有父类的属性和方法时使用继承。而类中想要实现某种行为时接口要比继承更好。类只能有一个继承,但可以有多个接口,所以想要实现多种行为时要用到接口。
    JAVA代码查错
    a、
    abstract class Name {
    private String name;
    public abstract boolean isStupidName(String name) {}
    }

    定义为抽象类,不能有方法的实现

    b、 abstract class Something {
    private abstract String doSomething ();
    }

    private方法默认声明为final,不能被子类重写,但是声明为抽象方法,是要求该方法子类重写,所以矛盾。抽象方法不能声明为private和static。

    c、public class Father{
    public Father(int x){

    }
    }

    class Child extends Father{
    public Child(){

    }
    }
    子类对象产生之前必须调用父类的构造方法产生父类对象。那么子类构造方法的第一句默认为super()。如果父类中没有定义无参构造方法,那么子类构造方法必须显示调用。

    d、public class Father{
    public void test(){

    }
    }

    class Child extends Father{
    public void speak(){
    }
    }
    class Test{
    public static void main(String[] args){
    Father f = new Child();
    f.speak();
    }
    }
    多态调用时,父类引用只能调用父类中定义的属性和方法,不能调用子类特有的属性和方法
    e、interface A{
    int x = 0;
    }
    class B{
    int x =1;
    }
    class C extends B implements A {

    public void pX(){
    System.out.println(x);
    }
    public static void main(String[] args) {
    new C().pX();
    }
    }

    当打印x时,引起歧义。不知道x是父类中继承的x,还是从实现接口中的x。
    要访问父类中继承的x属性,通过super.x访问。
    要访问接口中定义的x,由于接口中的变量修饰符为:public static final 可以通过 接口名.x 访问。

    说出运行结果

    1、abstract class Base{
    abstract public void myfunc();
    public void another(){
    System.out.println("Another method");
    }
    }

    public class Abs extends Base{
    public static void main(String argv[]){
    Base a = new Abs();
    a. another ();
    }
    public void myfunc(){
    System.out.println("My Func");
    }
    public void another (){
    super.another();
    myfunc();
    }
    }
    Another method
    My Func
    2、interface MyIn{}
    public class MyClass implements MyIn{
    static String str;
    public MyClass(){

    }
    public static void main(String[] args) {
    MyClass myClass = new MyClass();
    System.out.print(myClass instanceof MyIn);
    System.out.println(str instanceof String);
    }
    }
    true//接口引用指向子类对象
    false//str被初始化为null

  • 相关阅读:
    链家新房爬虫
    豆瓣电影爬虫
    电影天堂爬虫
    数组、数组和集合的区别
    Profile小试
    SQL中的case when使用小例
    使用AVAudioPlayer播放网络音乐
    播放器
    全排列问题
    由while(scanf("%d",&n)!=EOF)引出的小问题
  • 原文地址:https://www.cnblogs.com/zzyytt/p/5890496.html
Copyright © 2011-2022 走看看