封装、多态、对象的转型

程序设计的要求:“高内聚、低耦合”,高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合是仅暴露少量的方法给外部使用,尽量方便外部调用。

 

 

封装

编程中封装的具体优点:

1.提高代码的安全性 2.提高代码的复用性 3.“高内聚”:封装细节,便于修改内部代码,提高可维护性。 4.“低耦合”:简化外部调用,便于调用者使用,便与扩展和协作。

java是通过“访问控制符”来控制哪些细节需要封装,哪些细节需要暴露。java四种“访问控制符”分别是private、protected、public、default,说明了面向对象的封装性,所以利用他们尽可能把访问权限降到最低。

1.private表示私有,只有自己类能访问

2.default表示没有修饰符修饰,只有一个包的类能访问

3.protected:表示可以被一个包的类及其他包中的子类访问

4.public表示可以被该项目中的所有包的所以类访问

 

封装的使用细节

类的属性处理:1.一般使用private访问权限

                        2.提供相应的get/set方法来访问相关属性,这些方法都是public修饰的,以提供对属性的赋值和读写操作。(boolean变量的get方法是is开头)

测试:(普通方法一般都写public ,如sayHello方法)

 

 

 多态:指的是同一个方法调用,由于对象不同可能会有不同的行为。

要点:1.多态是方法的多态,不是属性的多态。

2.多态存在的三个必要条件:继承、方法重写、父类引用指向子类对象

3.父类引用子类对象后,用该父类调用子类重写的方法,此时多态就出现了

public class TestPolym {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Animal a=new Animal();
        animalCry(a);
        //a.shout();
        animalCry(new Dog());
        animalCry(new Cat());
    }
    static void animalCry(Animal a){ //用父类调用子类的方法,传的对象不一样,调用的方法也不一样
        a.shout();
    }
    /*如果没有多态
     * 需要大量的重载方法
     * static void animalCry(Dog d) //狗的叫
       d.shout();
       static void animalCry(Cat d) //猫的叫
       d.shout();
     * 
     * */
}
class Animal{
    public void shout(){
        System.out.println("叫了一声!");
    }
}
class Dog extends Animal{
    public void shout(){
        System.out.println("汪汪汪!");
    }
}
class Cat extends Animal{
    public void shout(){
        System.out.println("喵喵喵!");
    }
}

 (当代码过长一个页面截取不了时,会复制代码)

 

对象的转型:

父类引用指向子类对象,称为向上转型,属于自动类型转换

向上转型的父类引用变量只能调用它编译的方法,不能调用它运行类型的方法;我们需要对类型进行强制转换,称为向下转型

 

 

编译通过,运行错误的情况,同类之间不能转型:

 

posted @ 2019-08-13 10:31  acehm  阅读(163)  评论(0编辑  收藏  举报