2016-11-17 继续努力

1.封装

封装是为了保护内部数据不被修改,不过可以调用set和get来方便外界调用,这点和c#很像,下面来看代码

public class Time {
    private int hour;
    private int minute;

    public int getHour() {
        return hour;
    }

    public void setHour(int hour) {
        if (hour > 24 || hour < 0) {
            System.out.println("输入有误");
        } else {
            this.hour = hour;
        }
    }

    public int getMinute() {
        return minute;
    }

    public void setMinute(int minute) {
        if (minute > 60 || minute < 0) {
            System.out.println("输入有误");
        } else {
            this.minute = minute;
        }
    }
}

值得一提的是,set方法如果有误可以直接输出结果,并不需要syso,例如

t.setHour(25);------------>console输出文字"输出有误"
t.setMinute(61);------------>console输出文字"输出有误"

2.继成

父类也可以成为超类和基类,子类也可以称为派生类

子类可以继承父类的方法,也可以对其进行改写关键字为extends

public class ClassName extends FClassName(){};

super()

  在调用子类构造器的时候,如果没有显示的写出super,那么编译器会默认加上super()无参构造器

  如果想调用父类的有参的构造器,那么就必须显示的调用,编译器不会默认加上的

  创建子类对象的过程就是从底层的基类开始往上,一层层地调用构造方法

  注意:super()必须放在语句的第一句

  代码如下(先大概了解一下,后期实践逐渐加深理解)

 

public class A {
    A() {
        System.out.println("调用A的无参构造方法");
    }

    A(int i) {
        System.out.println("调用A的有参构造方法");
    }
}

class B extends A {
    B() {
        System.out.println("调用B的无参构造方法");
    }

    B(int i) {
        super(i);
        System.out.println("调用B的有参构造方法");
    }
}

class C extends B {
    C() {
        System.out.println("调用C的无参构造函数");
    }

    C(int i) {
        super(i);
        System.out.println("调用C的有参构造函数");
    }
}

 

3.多态

多态目前还不是很清楚其作用和意义,简单的说一下,就好比老虎可以当作动物也可以当作老虎,感觉挺怪.....,还是上代码吧

public class Test {
    public static void main(String[] args) {
        Animal t = new Tiger();
        Animal d = new Dog();
        Animal c = new Animal();
        // ShowMe里面的内容可以进行变换
        ShowMe(t);

    }

    public static void ShowMe(Animal a) {
        a.showme();
    }
}

 

*eclispe快捷键小技巧:

  如果有很多属性需要设置get和set则在source->generate getters and setters中勾选生成

  如果涉及的属性较少或者只需要get或者set其中一个方法时,则输入get/set----->alt+/---->选择对应的属性名即可

  另外选择需要生成set/get的属性,ctrl+1,选择create setters and getters for "xxx",即可快速生成对应的set/get方法

  再者还可以使用alt+shift+s可以调出set/get选项,然后操作同第一种一样,确定即可

 

  

posted @ 2016-11-17 17:20  与白  阅读(148)  评论(0编辑  收藏  举报