《JAVA面向对象第三章节——封装》

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 + "]";
    }
    
    
    
    
    
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值