package java_study01;
/**
面向对象的特征一:封装与隐藏 3w: what? why? how?1.问题的引入? 我们在创建了一个类的对象以后,通过"对象.属性"的方式,可以给对象的属性赋值。对此属性的赋值,是有限制的,比如:数据类型和数据类型储值范围的限制。但是,在实际问题中,还通过需要额外的限制。同时这些额外的限制,不可能在属性的声明中加上限制逻辑。那么,我们只能考虑通过方法,对属性的赋值进行额外的限制。同时,我们必须禁止再直接通过"对象.属性"的方式,对属性进行赋值。2.封装性的体现:(狭义上的体现)私有化(private)类的属性xxx,同时,提供公共的(public)设置(setXxx())和获取(getXxx())的方法3.封装性的体现:(广义上的体现) 3.1 java规定的4种权限修饰:(从小到大) private --> 缺省 --> protected -->public 3.2 java规定的4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类。 3.3具体来讲:4种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类。 只能使用缺省 或者 public 来修饰类 */public class fengzhuang { public static void main(String[] args) { Dogs dogs = new Dogs(); dogs.SetLegs(3); dogs.GetLegs();
}}
class Dogs { String name; int ages; // 封装成私有变量 private int legs;
// 提供set方法 public void SetLegs(int i) { if (i > 0 && i <= 4) { legs = i; } else { legs = 0; } } // 提供get方法 public void GetLegs() { System.out.println(legs); }}
封装与构造器练习
package java_study01; /* * 练习: * 考查:封装性、构造器的使用 * 编写两个类,TriAngle和TriAngleTest,其中TriAngle中声明私有的底边长base和高height, * 同时声明公共方法访问私有变量。此外,提供类必要的构造器。另一个类中使用这些公共方法,计算三角形的面积。 */ public class TriAngleTest { public static void main(String[] args) { TriAngle t = new TriAngle(10.0, 20.0); double area = t.findArea(); System.out.println("三角形的面积为:" + area); t.setBase(2.3); t.setHeight(2.4); area = t.findArea(); System.out.println("三角形的面积为:" + area); } } class TriAngle { private double base; private double height; // public TriAngle() { } public TriAngle(double b, double h) { base = b; height = h; } public void setBase(double b) { base = b; } public double getBase() { return base; } public void setHeight(double h) { height = h; } public double getHeight() { return height; } // 求三角形的面积 public double findArea() { return base * height / 2; } }