JAVA的对象和封装及static与final的用法(详解)
一:软件出现的目的
1:用计算机的语言描述现实世界
2:用计算机解决现实世界的问题
编程思维: 使用面向对象的思想(描述)面向对象的世界 (符合人类的思维习惯)
二:面向对象设计和开发程序的好处
1:符合人类的思维习惯
2:交流更加流畅
2:可维护性高(方便修改代码)
3: 提高设计和开发效率
三:面向对象的三大特性
四:从现实中抽象出类分三步:
1. 找出它的种类 2. 找出它的属性 3. 找出它的行为
在编程中的应用:
1:找出名词确定类、属性 eg: (确定类) class Dog{} (确定属性)String name="小黑"; String Strain="拉布拉多"
2:找出动词确定方法 eg:(进食方法) public void eat (){ //省略代码 }
3:剔除与业务无关的属性和方法
五:实现封装的步骤
1:画类图:
类图的作用:1:用于分析和设计“类”
2:直观,容易理解
2:封装的概念:
封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
3:编写代码实现封装
1:修改属性的可见性 (设为private)
2:创建公有的getter/setter方法 (用于属性的读写)
3:在getter/setter方法中加入属性控制语句 (对属性值的合法性进行判断)
【代码示例】
1 public class Dog { 2 private String name;//昵称 3 private int health;//健康值 4 private int love;//亲密度 5 private String strain;//品种 6 7 public Dog() { 8 } 9 10 public String getName(){ 11 return name; 12 } 13 public void setName(String name){ 14 this.name=name; 15 } 16 public int getHealth(){ 17 return health; 18 } 19 public void setHealth(int health){ 20 if(health>100||health<0){ 21 this.health=40; 22 System.out.println("健康值应该在0到100之间,默认值是40"); 23 }else{ 24 this.health=health; 25 } 26 } 27 public int getLove(){ 28 return love; 29 } 30 public void setLove(int love){ 31 this.love=love; 32 } 33 public String getStrain(){ 34 return strain; 35 } 36 public void setStrain(String strain){ 37 this.strain=strain; 38 } 39 public void print(){ 40 System.out.println("宠物的自白"); 41 System.out.println("我的名字叫"+name+",健康值是"+health+",和主人的亲密度是"+love+",我是一只"+strain); 42 } 44 }
4:封装的好处:
(1):隐藏类的实现细节
(2):只能通过规定方法访问数据
(3):方便加入控制语句
(4):方便修改实现
六:访问成员变量及方法
1:static的作用:
(1)static 可以用来修饰属性,方法和代码块,称为静态变量,静态方法和静态代码块
(2)由static 修饰的属性和方法,可以直接通过类名.属性 或 类名.方法来进行调用
(3)由static 修饰的代码块,在运行时,程序默认自动调用,且优先于构造方法和普通方法;若类中有多个代码块,则按照静态代码块顺序依次执行
2:final的作用:
(1)final 可修饰类,属性,和方法
(2)当final 修饰一个类时,该类成为最终类,无法被继承。简称为“断子绝孙类”。
(3)当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继承。
(4)当final修饰属性(变量)时,则该属性为常量,其固定值不变,该值无法修改
【示例】