面向对象思想特征

封装(encapsulation)

把一系列功能打包到一起,只提供使用这些功能的界面;

即将一系列相关事物的共同的属性和行为提取出来,放到一个类中,隐藏对象的属性和实现细节,仅对外提供公共的访问方式。

封装的关键就是绝不能让类中的方法直接访问其他类中的数据,程序仅通过对象的方法与对象的数据进行交互

继承(inheritance)

让类与类之间产生父子关系

子类继承父类后,子类拥有了父类的非私有成员(成员变量,成员方法)

public class ExtendDemo01 {
    public static void main(String[] args) {
        Child child=new Child();
        child.setAge(22);//调用父类方法
        //child.age; age属于父类的私有成员变量,子类无法继承
        System.out.println(child.getAge());
    }
}
class Child extends Parent{
}
class Parent{
    public Parent(){}
    private String name;
    private int age;

    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getAge() {
        return age;
    }
}

继承关系中类成员的使用 

继承关系中父类成员变量的使用:

如果子类与父类中定义了同名的成员变量,如何使用?

①子类中定义成员变量int price=20

②父类中定义成员变量int price=10

③子类成员方法中定义局部变量int price=5

④子类成员方法中分别输出三个price的值

public class ExtendDemo03 {
    public static void main(String[] args) {
        Apple apple=new Apple();
        apple.showPrice();//有局部变量时,输出5
                          //没有局部变量,有子类成员变量时,输出10
                         //都没有时,输出20
    }
}
class Apple extends Fruit{
    //int price=10;
    public void showPrice(){
        //int price=5;
        System.out.println(price);
    }
}
class Fruit{
    int  price=20;
}

Java中使用变量的规则:遵循就近原则。局部位置有就使用,没有就去本类的成员位置找,有就使用,没有就去父类的成员位置找,有就使用,没有就报错。

     System.out.println(this.price);//本类中的成员变量      
System.out.println(super.price);//父类中的成员变量

super表示当前对象父类的引用

 

猜你喜欢

转载自www.cnblogs.com/wyj96/p/11749207.html
今日推荐