17.8封装
java三大特性:封装 继承 多态
封装是面向对象的思想的特性
属性,方法,类,项目 都可以进行封装
1.对属性的封装
1.对成员变量加修饰符private
2.在类中写set,get方法对属性进行赋值和取值(好处:可以对变量范围进行控制,无法直接通过 对象.方法 形式访问属性)
3.set,get命名:使用set/get +变量名,小驼峰法进行命名
4.set和构造方法都可以对属性进行赋值,选择一种即可
package com.qfedu.b_fengzhuang;
class Pig {
private String name;
private int age;
//依靠set方法进行赋值了 赋值是没有返回值的
public void setName (String name) {
this.name = name;
}
//有规律 在赋值的时候 set变量名字 小驼峰的命名规则
public void setAge (int age) {
//可以控制变量值的范围 大小
if (age < 0 || age > 100) {
this.age = 0;
} else {
this.age = age;
}
}
//书写get方法
public String getName() {
return name;
}
public int getAge () {
return age;
}
}
public class Demo3 {
public static void main(String[] args) {
Pig pig = new Pig();
pig.setName("猪刚鬣");
pig.setAge(-90);
System.out.println(pig.getName() + ":" + pig.getAge());
}
}
17.9this关键字
写在类中,表示当前对象
可以使用this关键字调用属性和方法
this关键字只能在方法(构造方法和成员方法)中使
this可以调用当前对象的其他构造方法
只能在构造方法中调用其他构造方法
只能放在第一行 this()
17.10类对象可以作为一个方法的参数
方法的参数可以是八大基本数据类型,String,数组
类对象也是可以的
17.11多类合作【重点】
一个类对象可以作为另一个类的成员变量
(把对象看做一个正常的属性,对象new时所属的类就是数据类型,正常操作)
package com.qfedu.e_moreclass;
class Person1 {
private String name;
private Cat1 cat1;//一个类对象可以作为另外一个类的属性来使用
//碰到private修饰的属性有set和get的想法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Cat1 getCat1() {
return cat1;
}
public void setCat1(Cat1 cat1) {
this.cat1 = cat1;
}
}
class Cat1 {
private String name;
private char sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
}
public class Demo2 {
public static void main(String[] args) {
//要对Person1对象的属性进行赋值
Person1 person1 = new Person1();
person1.setName("老万");
Cat1 cat1 = new Cat1();
cat1.setName("小万");
cat1.setSex('母');
person1.setCat1(cat1);
//取值
//通过 人取猫的值
System.out.println(person1.getName());//获取人的名字
System.out.println(person1.getCat1());//获取猫对象
System.out.println(person1.getCat1().getName());//获取猫的名字
System.out.println(person1.getCat1().getSex());
}
}