package com.yyzy.test;
public class Demo1 {
public static void main(String[] args) {
/*
1.为什么要对类进行封装:
原因:将类的相关属性进行隐藏,不对外开放。避免一些安全性问题。
2.封装最常见的例子:就是针对实体类。
3.需要掌握如何正确编写实体类。
4.今日知识点总结:如果可以从0到1 正确编写一个实体类,且 知道每行代码的意义,就表示今天的知识点掌握透了。
习题:
有一个Person实体类、拥有Id name age 三个属性。
将其声明成一个实体类
*/
}
}
public class Student {
/*
例如:学生实体类为例: 拥有id name sex 三个属性。
步骤1:创建该类
步骤2:声明属性 需要通过private修饰
步骤3:由于属性都被私有化了。所以外部无法通过属性来进行操作。所以需要对外开放若干个方法,对属性进行操作。
步骤4:对属性进行set/get方法的创建 可以通过快捷键的方式
步骤5:需要生成一个toString方法,原因:随时检查实体类的属性值是否正确 如果没有加,打印对象将会得到内存地址
加了toString,打印对象将会得到对象的属性值。
步骤6:创建对应的构造方法
5. 构造方法的概念:
1.构造方法是一个特殊的方法。无法被显示调用,只能在被实例化的时候自动调用。
2.意义:实例化(没有构造方法就无法实例化)。
3.每个类都至少含有一个构造方法,如果没有声明就说明存在一个默认的无参构造方法 类名 变量名 = new 类名();//这里没有参数
4.一般来说:一个类至少有2个构造方法,1个无参构造方法 1个有参构造方法。
*/
private int id;
private String name;
private char sex;
public Student() {//空参的构造方法 ,有了它 别处才可以
}
public Student(int id, String name, char sex) {
this.id = id;
this.name = name;
this.sex = sex;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;//加了this表示当前类下的属性,没有加this就是方法的参数列表的属性
}
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;
}
}
6.Java的四大修饰符:
1、 public :任何地方都可以访问
2、 protected:受保护,只有在同一个包下,或者不同包,但是具有继承关系可以访问
3、default(不写) :默认的:只有在同一个包下,可以访问
5、 private :私有的,只有当前类可以访问
7. 空参或有参
package com.yyzy.entity;
public class Person {
private int id;
private String name;
private int age;
public Person() {//空参构造方法 有了它。在别处才可以通过Person p = new Person(); 来实例化
}
//有参构造方法 反问:上面明明写了无参的为什么还要写有参的。可不可以不写
//当然可以不写 ,但是如果只有无参的,那么实例化之后需要一一赋值。比较麻烦
//如果有 有参 实例化的同时 即可完成赋值操作
//例如 Person p = new Person(123, "张三" , 18);
public Person(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
package com.yyzy.test;
import com.yyzy.entity.Goods;
import com.yyzy.entity.Student;
import com.yyzy.entity.Teacher;
public class Demo1 {
public static void main(String[] args) {
/*
8.什么是java的权限修饰符:
用来修饰方法,属性等。
Java的权限修饰符分为四大类:
public :公共的 表示它修饰的东西,在任何地方都可以访问。
protected :受保护的 表示它修饰的东西,只能在同一个包下访问,或者是具有继承关系的。
default :默认的 如果看见一个变量或方法,没有任何修饰符,那么就是被它修饰.只能在同一个包下访问
private :私有的 仅仅只能在当前类下使用。
其中重点掌握:
public:一般用来修饰方法
private:一般用来修饰实体类的属性。
上述只需要掌握 :熟记概念
见com.yyzy.entity.Student
今日掌握程度:
1.熟练说出4大权限修饰符概念
2.熟练敲写实体类的相关代码,并思考为啥这么写。
*/
Student s = new Student();
s.setId(123);
s.setName("张三");
s.setSex('男');
System.out.println(s.getId() + s.getName() + s.getSex() );
System.out.println(s);
Teacher t = new Teacher();
t.setTeacherId(111);
t.setTeacherName("李四");
t.setTeacherSex('女');
System.out.println(t);
Goods g = new Goods();
g.setName("wahaha");
g.setPrice(2.5);
g.setNum(100);
System.out.println(g);
}
}
9.Goods例题
package com.yyzy.entity;
public class Goods {
private String name;
private double price;
private int num;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
@Override
public String toString() {
return "Goods [name=" + name + ", price=" + price + ", num=" + num + "]";
}
}
10.Student例题
package com.yyzy.entity;
/*
已知Student类。属性分别为id,name,sex
创建实体类的规范步骤:
1.私有化所有属性 目的:增加安全性,防止在别的地方直接通过属性来修改值或访问。
2.声明若干个方法,对属性进行赋值。(潜台词:禁止通过属性修改,只能通过方法修改。)
3.声明若干个方法,对属性进行取值。
4.声明一个打印实体类所有属性的方法
*/
public class Student {
private int id;
private String name;
private char sex;
public void setId( int id ) { //set赋予
id = id;
}
public void setName(String name1) {
name = name1;
}
public void setSex(char sex1) {
sex = sex1;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public char getSex() {
return sex;
}
public String toString() {
return "id=" + id +",name=" + name+",sex=" + sex;
}
}
11.Teacher例题
package com.yyzy.entity;
public class Teacher {
/*
由于实体类的规范。所有很多开发工具都有自动生成实体类的快捷键、
只需要声明属性即可。
1.通过快捷键生成该实体类的set.get.toString方法即可。
a.将鼠标焦点放在代码想生成的位置
b.鼠标右键 看操作
*/
private int teacherId;
private String teacherName;
private char teacherSex;
public int getTeacherId() {
return teacherId;
}
public void setTeacherId(int teacherId) {
this.teacherId = teacherId;//this表示引用当前类下的属性
}
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
public char getTeacherSex() {
return teacherSex;
}
public void setTeacherSex(char teacherSex) {
this.teacherSex = teacherSex;
}
//如果不加这个方法 ,打印实体类就是打印的内存地址,如果加了这个方法,打印实体类就是打印实体类的属性值。
@Override
public String toString() {
return "Teacher [teacherId=" + teacherId + ", teacherName=" + teacherName + ", teacherSex=" + teacherSex + "]";
}
}