码迷,mamicode.com
首页 > 编程语言 > 详细

java面向对象2

时间:2014-05-19 15:43:23      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   c   java   

访问控制符:

          private、default、protected、public

同一个类中      √     √           √            √

同一个包中          √     √            √

子类中                √            √

全局范围                                                      √

 

访问控制符来控制:Field、方法、构造器能否被其他类访问到。

 

面向对象三大特征:

1、封装:

  将对象的状态信息隐藏在对象内部,不允许外部程序直接访问,只可以通过该类提供的方法来对内部信息进行操作和访问。

  

bubuko.com,布布扣
class DemoA {
    // 通过访问控制符,将Field隐藏,外界无法访问
    private int age;
    //通过getter、setter方法,提供对Field的操作、访问
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        if(age<0){
            System.out.println("输入的参数不合法");
        }
        else {
            this.age = age;
        }
    }
}

public class OOP {
    public static void main(String[] args) {
        DemoA demoA = new DemoA();
        demoA.setAge(100);
        System.out.println(demoA.getAge());
    }
}
bubuko.com,布布扣

2、继承

     所谓的继承通过extends关键字来实现,子类可以获得父类中所有可以被继承的Field和方法。

  Field:

  当子类中定义和父类相同的Field的时候,子类中的Field将会隐藏父类中的Field。

bubuko.com,布布扣
class SuperClass {

    public int weight = 2;

}

class SubClass extends SuperClass {

    public int weight = 3;

    public void info() {
        //调用父类的weight
        System.out.println("this weight super:" + super.weight);
        //调用子类的weight
        System.out.println("this weight sub:" + weight);
    }

}

public class ExtendsDemo {

    public static void main(String[] args) {
        SubClass subClass = new SubClass();
        subClass.info();

    }

}
bubuko.com,布布扣

  Field的访问顺序:

  1、(如果在方法中)查找该方法中是否存在该局部变量

  2、查找当前类是否存在该Field

  3、查找该类的直接父类,是否存在该Field,依此类推,知道追溯到java.lang.Object,没有就报错。

   

    Methd:

  子类可以继承得到父类的可被继承的方法,同时可以覆盖父类中继承过来的方法。

  

bubuko.com,布布扣
class Bird{
    public void fly(){
        System.out.println("Bird can fly");
    }
}

class Ostrich extends Bird{
    public void fly() {
        System.out.println("Ostrich can not fly");
    }
    //通过super来调用被覆盖的父类的方法
    public void fly2(){
        super.fly();
    }
}
public class ExtendsDemo2 {    
    public static void main(String[] args) {
        Ostrich ostrich = new Ostrich();
        ostrich.fly();
        ostrich.fly2();
    }
}
bubuko.com,布布扣

  子类在覆写父类的方法时,遵守如下约定:

   “两同两小一大”

   “两同”:方法名相同、形参列表相同

   “两小”:返回值类型更小或者相等、异常更小或者相等

   “一大”:访问权限更大或者相等

 3、多态

  java引用变量有两个类型:一个是编译时类型;一个是运行时类型。当编译时类型与运行时类型不一致的时候,就会出现所谓的多态。

 

  

java面向对象2,布布扣,bubuko.com

java面向对象2

标签:style   blog   class   code   c   java   

原文地址:http://www.cnblogs.com/lengmianluocha/p/3733620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!