构造器
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;
}
}