Java面向对象之封装

面向对象分为:封装、多态、继承
面向对象——封装
面向:朝向、面对;即关注
对象:世间一切事物
面向对象/过程思想:把关注点放在某一物或是某一活动上,所涉及的人或物(也就是对象)/步骤(也就是过程)上的思想(或是思维方式)。
假设我要吃饭,执行面向对象的话,可以把对象指向他人,叫他人做饭,我负责吃就行。执行面向过程则是,我要具体化吃饭这一过程:买菜、洗菜、炒菜,最后吃。
类与对象
类:具有相同属性和行为(功能)的一系列事物,是一种抽象概念(手机)
对象:把类具体化,是一种具体概念(我手上的手机)
英子学习专用

package itcast;

public class TestStudent {
    public static void main(String[] args) {
        Student a = new Student();
        a.clas = "2020-5";
        a.hour = 2;
        a.name = "嘤嘤";
        a.study();
/*private用法*/
// 设置值
a.setAge(23);
// 获取值
System.out.println(a.getAge);
    }
}

package itcast;

import java.util.SplittableRandom;

/*这个是学生类,都给爷学!!!*/
public class Student {
    //成员变量(类中,方法外)存在堆内,初始为null
    String clas;//  班级(不能使用关键字)
    String name;//  姓名
    int hour;// 学习时长

    //成员方法
    public void study(){
        // 括号中形参也叫局部变量
        //局部变量(仅在方法内)存在栈内,要赋值
        String clas = "5班";//局部变量,只要在方法体内的变量都叫局部变量
        /*下面语句中,clas首先会用自己的局部变量(包括形参);没有的话找成员变量;也没有就找父类中的*/
        System.out.println(clas +name+ "应学习"+hour+"小时");
    }
    // private一般用于修饰成员变量,被修饰的成员变量只允许在当前类中使用
    // public一般用于修饰成员方法
    private int age;
    public void setAge(int a){age = a;}
    public int getAge(){ return age;}
}

先定义好Student类,再创建TestStudent对象;
其实和前面的类中的调用是一样的,,只是所有的类都和main方法写在一起会很乱,所以这样分开写更清晰一些,还可以将同一个类建立到同一个包里,以此分类。这个过程就叫做封装

this用法
main方法:

package itcast;

public class TestStudent {
    public static void main(String[] args) {
        Student a = new Student();
        a.study();
    }
}

创建的类

package itcast;

import java.util.SplittableRandom;

/*这个是学生类,都给爷学!!!*/
public class Student {
    //成员变量
  private String clas = "6班";

    //成员方法
    public void study(){

        String clas = "5班";
        System.out.println(clas);
        System.out.println(this.clas );
        //在成员变量与局部变量重名时,可以用this来解决。
        // 可以不加private
    }
}
package itcast;

public class TestStudent {
    public static void main(String[] args) {
        Student a = new Student();
        a.setAge(50);
        a.getAge();
    }
}



package itcast;

import java.util.SplittableRandom;

/*这个是学生类,都给爷学!!!*/
public class Student {
    //成员变量
  private int age = 20;
    //成员方法
    public void setAge(int age){
        age = age;//    这里的age得到的是传参的50
        System.out.println(age);
        this.age = age;//   这样的话可以将传参与getAge相连接,使其拿到传参值50
    }
    public void getAge(){
        System.out.println(age);//一开始这里的age打印的是成员变量20,加上this后为50
    }
}

构造方法
构造方法名必须与类名相同;无返回值,但可以写return表示结束;无返回值类型,void也不可以。
有参构造和无参构造同时使用,或者仅用无参构造就行,不用再去封装的类中写明,系统会自动给出。构造方法可以重载
下面这个语句实际上就是一个无参构造

Student a = new Student();

相当于封装类中的

 public Student(){}

构造方法还是要通过setXX和getXX输出

package itcast;

public class TestStudent {
    public static void main(String[] args) {
        //定义一个23岁的张三同学
        //格式一:仅用无参构造
        Student b = new Student();
        b.setName("张三");
        b.setAge(23);

        System.out.println(b.getName());
        System.out.println(b.getAge());
        //格式二:简化格式一
        Student c = new Student("张三",23);
        System.out.println(c.getName());
        System.out.println(c.getAge());
    }
}
package itcast;

import java.util.SplittableRandom;
/*这个是学生类,都给爷学!!!*/
public class Student {
    public Student(){}//无参构造
    public Student(String name, int age){//有参构造
        this.name = name;
        this.age = age;
    }
    //成员变量
  String name;
  private int age = 20;
    //成员方法
    public void setName(String name){
       this.name = name;
    }
    public String  getName(){
        return name;
    }
    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        return age;  
    }
}

JavaBean类的标准定义

package itcast;

public class TestStudent0 {
    public static void main(String[] args) {
        //构造无参
        Student0 b = new Student0();
        b.setAge(27);
        b.setName("小黄");
        b.setGlass("电信班");
        System.out.println(b.getGlass() + b.getName() + b.getAge());
        // 构造全参
        Student0 a = new Student0("小黄", 27, "电信小姐妹");
        System.out.println(a.getGlass()+a.getName()+"今年"+a.getAge()+"岁");
    }
}
package itcast;

public class Student0 {
    /*标准的封装,提取处事物的共同属性和行为,放到一个类当中,
    隐藏对象的属性和实现细节,仅对外提供公共的访问方式*/
    //成员变量
    private String name;
    private int age;
    private String glass;
    //构造方法,无参构造,全参构造
    public Student0(){}
    public Student0(String name, int age, String glass){
        this.name =name;
        this.glass= glass;
        this.age =age;
    }
    //成员方法
    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        return age;
    }

    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return  name;
    }

    public void setGlass(String glass){
        this.glass = glass;
    }
    public String getGlass(){
        return glass;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值