首页 > 技术文章 > java -对象和封装

wufanfan 2020-05-11 19:53 原文

为什么使用面向对象

1.用计算机的语言描述世界;2用计算机解决现实世界的问题

 面向对象设计和开发程序的好处

1.交流更加流畅;2.提高设计和开发效率

面向对象的基本步骤

面象对象设计的过程就是抽象过程,分以下三步来完成。

  第一步:发现类

  第二步:发现类的属性

  第三步:发现类的方法

创建类和对象

宠物狗狗类

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;
        }
    }
}    

构造方法

语法: 修饰符    类名(){  }

在执行的时候,无参构造方法会自动生成,但是如果类中有了有参构造方法,则不会自动生成。推荐在写类的时候将有参和无参构造方法都写;在我们执行的时候,new对象时,对象名后面括号[ Dog dog = new  Dog()  ] 里面可以有的参数类型必须符合类中已声明的有参构造方法

public Dog(){
        System.out.println("Dog无参构造方法....");
        this.name="二哈";
        
    }

public Dog(String n,int h,int love){
        System.out.println("有参构造方法....");
        this.name=n;
        this.health=h;
        this.love=love;
    }


    测试
Dog  dog = new Dog(); 
Dog  dog2= new Dog("二哈",89,100);

方法重载

在同一个类里面方法名相同,参数列表(方法参数的个数或参数类型)不同,称之为 方法重载  方法重载与方法返回值和方法修饰符没有任何关系

封装

封装是面向对象三大特征之一(另外两个是继承和多态),它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象的信息,而是通过该类所提供的方法来实现对内部的操作和访问。

步骤

1.将属性私有化 设为private

2.编写setter方法,针对用户输入的值进行判断

3.编写getter方法来获取值

推荐阅读