面向对象(上)之 构造器与封装

it2026-04-25  3

构造器

package java_study01; /** * 类的成员之三:构造器 (constructor,构造方法) construct:建造、建设 construction * * * 1.构造器的作用:① 创建类的对象 ② 初始化对象的属性 * * 2.说明: ①如果在定义一个类时,没有显式的声明类的构造器。那么系统会自动给类提供一个无参的构造器。 ②如何声明一个类的构造器。格式:权限修饰符 * 类名(形参列表){ } ③如果我们在类中一旦定义类的构造器,那么系统就不再提供默认的无参的构造器了。 ④类的多个构造器之间,彼此构成重载 * ⑤总结:类中,一定会有构造器! * * 3.关于类中属性赋值的先后顺序: ①默认初始化 - ②显式初始化 - ③构造器中初始化 - ④通过"对象.属性" 或 "对象.方法"的方法,给属性赋值 * * */ public class gouzaoqi { public static void main(String[] args) { People p1 = new People(); p1.eat(); People p2 = new People("Tom",12); System.out.println(p2.name); System.out.println(p2.age); //验证属性赋值的顺序 People p3 = new People(); System.out.println(p3.name); People p4 = new People("BB"); System.out.println(p4.name); p4.name = "CC"; System.out.println(p4.name); } } class People { // 属性 String name = "AA"; int age; // 空构造器(构造器的重载) public People() { } public People(String n) { System.out.println("hello!"); name = n; } public People(int a) { age = a; } public People(String n, int a) { name = n; age = a; } // 不能再声明了 // public Person(String m){ // // } // 方法 public void eat() { System.out.println("吃饭"); } public void sleep(int hour) { System.out.println("睡觉,睡了" + hour + "个小时"); } }

封装

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; } }
最新回复(0)