对象和封装

1.什么是类,什么是封装?

1)类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

2)对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。

对象和类的关系:
类与对象的关系就如模具和铸件的关系,类的实力化的结果就是对象,而对对象的抽象就是类,类描述了一组有相同特性(属性)和相同行为的对象。

3)封装概念
封装:每个对象都包含有它能进行操作的所有信息,这个特性称为封装。这样的方法包含在类中,通过类的实例来实现。

4)封装的优点
1.封装还避免了命名冲突的问题,封装有隔离作用,不同的类中可以有相同名称的方法和属性,但不会混淆,也可以减少耦合(比如实现界面和逻辑分离)
2.可以让类对外接口不变,内部可以实现自由的修改
3.从安全性考虑,封装使对代码的修改更加安全和容易,封装明确的指出了哪些属性和方法是外部可以访问的
4.因为封装的类功能相对独立,因此能更好的实现代码复用
5.从设计角度来讲,封装可以对外屏蔽一些重要的信息。注意:这里的代码保护不是指代码本身的加密,而是对不想外部更改的代码通过私有实现。

 


狗狗类
public
class Dog { String name="哈哈"; int health = 100; int love =100; String strain="二哈"; public void print(){ System.out.println("宠物的自白:\n我的名字"+this.name +",健康值是"+this.health+",和主人的亲密度是"+this.love+",我是一只"+this.strain+"。"); } }
企鹅类

public class Penguin {
    String name="嘿嘿"; 
    int health = 100;   
    int love = 100;      
    String sex="Q仔";
    
    public void print(){
        System.out.println("宠物的自白:\n我的名字"+this.name+",健康值是"+this.health
+",和主人的亲密度是"+this.love+",性别是"+this.sex+"。");
    }
}
测试类
public class Test {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("欢迎您来到宠物店!");
        System.out.println("请输入要领养的宠物的名字:");
        String name = input.next();
        System.out.println("请选择要领养的的类型:(1.狗狗 2.企鹅)");
        int num = input.nextInt();
        switch(num){
            case 1 :
                System.out.println("请选择狗狗的品种:(1.二哈2.金毛)");
                String strain= input.next();
                if(input.nextInt()==1){
                    strain = "二哈";
                }else{
                    strain = "金毛";
                }
                
                Dog dog=new Dog();
                dog.name=name;
                dog.strain=strain;
                dog.print();
                break;
            case 2 :
                System.out.println("请选择企鹅的性别:(1.Q仔 2.Q妹)");
                String sex=input.next();
                if(sex.equals("1")){
                    sex="Q仔";
                }else{
                    sex="Q妹";
                }
                Penguin pgn = new Penguin();
                pgn.name=name;
                pgn.sex=sex;
                pgn.print();
                break;
        }
    }
}  

 

posted @ 2020-05-15 16:54  冻感超人  阅读(188)  评论(0)    收藏  举报