OOP面向对象——封装

来源:互联网 发布:药水哥网络臭要饭的 编辑:程序博客网 时间:2024/06/06 02:06

理解封装的好处,理解面向对象的编程


封装类:Student.java

package 封装_构造方法;/** * 封装:封装了成员变量,封装了方法(函数) * 1.定义一个类(class):类是java的核心和本质,是java的基础,java程序中实现的每一个概念都必须封装在类里面。 * 模板(template)实例(instance)定义在类中的变量成为实例变量,代码包含在方法内,类的通用格式并 * 没有指定,main()方法,java类不需要main()方法,main()只在定义程序起点时用到。 * 作用:可重复使用,使代码的实现不可见,方便维护 * @author 一抹灬茶香 *///每个对象的实例属性都是独立的,即对象的静态属性是私有的//封装第一步:归纳出由个体到一般的同一类物体共有的静态属性public class Student {//1.分析:所有学生具有的静态属性//2.把静态属性变成成员变量private int id;private String name;private String sex;private int age;private String address;//给类的成员变量赋(初始)值,即类的初始化有两个办法:1.get,set  2.构造方法//给所有的私有属性一个公有的,有get,set方法//右键Source——Generate Getters and Setters——使用get,set方法public int getId(){//get一定有返回值,无参数return id;}public void setId(int id) {//set一定无返回值,有参数this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}//==============================/*构造方法是一个特殊的方法,没有void修饰符(没有返回值)。方法名和类名一样,可以写多个(即重载)。一定有一个,如果不写,JVm自动给一个无参数的。它只能在new的时候匹配调用*/public Student(){System.out.println("==调用了无参数的构造方法==");}//《》《》《》《》《》《》《》《》public Student(int id){//public void Student(int id){//不是构造方法,因为有返回值,只是个普通的方法this.id=id;}//《》《》《》《》《》《》《》《》//<><><><><><><><><><><>public Student(int id,String name){this.id=id;this.name=name;}//<><><><><><><><><><><>//=============================================public Student(int id,String name,String sex,int age,String address){//System.out.println("====调用了===构造方法");this.id=id;this.name=name;this.sex=sex;this.age=age;this.address=address;}//=============================================public String toString(){//所有的类都有一个超级父类:Object//重写父类的方法return id+" "+name+" "+sex+" "+age+" "+address;}//第二部:归纳出由个体到一般的同一类物体共有的动态行为//分析:所有学生具有的动态行为,把动态行为变成方法//普通方法必须通过new后调用public void study(){System.out.println("《》《》《》学习中《》《》《》");}public void sport(){System.out.println("《》《》《》运动中《》《》《》");}public void rest(){System.out.println("《》《》《》休息中《》《》《》");}}


测试类:test1.java    test2.java

package 封装_构造方法;public class Stu_test1 {public static void main(String[] args) {Student s1=new Student();s1.sport();System.out.println("s1.id="+s1.getId());s1.setId(101);s1.setName("周星星");s1.setSex("男");s1.setAge(50);s1.setAddress("HongKong");System.out.println("s1.id="+s1.getId());System.out.println("s1.name="+s1.getName());System.out.println("s1.sex="+s1.getSex());System.out.println("s1.age="+s1.getAge());Student s2=new Student();Student s3=new Student();System.out.println("s1的地址="+s1);System.out.println("s2的地址="+s2);System.out.println("s3的地址="+s3);}}

test2

package 封装_构造方法;public class Stu_test2 {public static void main(String[] args) {/*构造方法是一个特殊的方法,没有void修饰符(没有返回值)。方法名和类名一样,可以写多个(即重载)。一定有一个,如果不写,JVm自动给一个无参数的。它在new的时候匹配调用*/Student s1=new Student(109,"aaa");//调用Student中的//<><><>中间的Student s2=new Student(101,"admin","男",23,"wuxi");//调用Student中的//=====中间的,变量类型必须对应/*s1.Student(101);无法调用,在Student中无返回值,调用需要将Student中的《》《》《》出加void*/System.out.println(s1);System.out.println(s2);/*当打印对象的时候,默认调用toString方法,如果该类没有写,就调父类的父类没有写,就会输出地址,想输出该内容,就必须重新写此方法*/}}



0 0
原创粉丝点击