一、封装(private) 将字段或者方法封装起来,即对字段或者方法私有化,使用private修饰。 这个字段或者方法就不能通过对象名.字段/方法名&类名.字段/方法名使用了。 通常来讲,私有化通常是私有化字段,而不是方法,因为方法既然写出来了,就是要让使用者去调用、去使用。 示例: private String name;//封装 此时使用标准的JavaBean(setget)方法去拿到这个字段 public void setName(String name){//当对象使用字段时,将对象中的值传入,再将此值保存到对象中,以便使用 this.name = name; } public String getName(){//使用getName方法拿到这个字段的值 return name; } 使用封装的好处: ① 类的成员变量可以成为只读或者只写的。 比如用:访问器getXxxx();或者修改器setXxxx(); ② 类可以对储存在其中的成员变量中的内容有一个整体的控制。 可以根据访问修饰符的提点在其它类中调用该类中的属性和行为。 ③类的用户不需要知道类是如何储存数据的。 比如:这是一个类中得到生日的方法 public String getBirthday(){ return year + "-" + month + "-" + day; } public void setBirthday(String birthday){ //拆分字符串,分别取出年月日,给year、month、day进行赋值 } 而在外部调用这个方法的时候 this.getBirthday(); this.setBirthday("1990-9-9"); 此时就体现出外部是不知道如何储存birthday这个方法的,用户只能调用它。 二、继承(extends) 继承是指一个类继承另一个类。 写法是: class A{//拟定为父类 public void print(){ System.out.println("你好啊"); } } class B extends A{ public void print(){ System.out.println("我不好"); } } 此时B就继承了A。使用继承的好处是B为子类拥有A为父类中的所有字段及方法的使用权(前提:使用时的权限必须要小于或者等于父类中字段或者 方法的权限——private<默认不写<protected<public)。 同时,继承中还有一点需要注意,继承父类是希望子类对象去使用父类中的方法,但是此时我们需要完成的目的和父类中方法中的设计有出入,所以此时就需要到覆写方法(Override)的使用。 子类方法与父类方法除了代码块中的设计流程不一样之外,方法名、修饰符、返回值、参数列表都必须保证一致。 就比如上列中写的A父类中的方法打印的是“你好啊”,但是我们现在是想要打印“我不好”,所以需要覆写方法来得到我们想要的。 好处是:①Java中很多类以及方法是需要见名知意的,但是我们需要这样的方法,我们就去继承一个父类,然后再来覆写它的方法,时刻提醒我们需要去覆写,因为方法就是一个类的属性,那么就必须要有一些具有这个类中的属性,所以我们需要继承后再来覆写即体现了万事万物皆为类。 ②我们在编程的时候常常遇到大量的代码需要重复的情况,导致我们的代码比较臃肿,开发效率也大大降低,所以Java继承的作用就体现出来了。定义一个类做为父类,将一些共有的属性和方法定义在这个类中,当某一个类需要使用到这些方法和属性的时候,就可以直接通过extends关键字就可以直接调用父类中的成员变量和方法,方便快捷。 三、多态 多态是基于继承上来讲,继承可以实现单个继承但是可以多重继承,所有类最后继承的都是Java.lang包中的Object类。多态是指多个类可以继承一个类,就好比一个父亲可以有多个儿子,但是只有一个父亲。 语法: class A { } class B extends A{ } class C extends A{ } A a = new B();//父类类型包含子类类型,实现了兼容原理 C c = new B();//false,在同一个父类下的子类不能相互兼容,就好比一个孩子就是一个孩子,不可能一个孩子还能把另一个孩子合并了。 用通俗的分析多态: 花木兰替父从军:花木兰代替她父亲从军,用的是她父亲的名字,到军营去后,她只能化父亲那样的妆模仿她父亲--这就是父类类型兼容的时候,只看类型不看值。但是父亲却不能像她生孩子,所以就是父类不能使用子类的特性。而在军队打仗的时候,军队派花木兰上战场,此时是花木兰在上战场拼搏,所以使用对象的时候,还是使用的子类的方法,如果子类找不到就会向上查找。 使用多态的好处:多态可以让我们不用关心某个对象到底是什么具体类型,就可以使用该对象的某些方法,这就是多态的好处。调用的时候只需将子类对象传递给基类对象,编译器将会根据具体类的对象调用相应对象的方法,从而简便了编程。
转载于:https://my.oschina.net/u/4083606/blog/3027620