目录
- 前言
- 一、面向对象是什么?
- 二、类和对象是什么?
- 
- 1、类和对象
- 2、类的介绍
- 3、类和对象的关系
- 4、类的组成
- 5、对象
- 
- 🐘创建对象
- 🐘使用对象属性(成员变量)
- 
- ⭐代码演示
 
- 🐘使用对象属性(成员方法)
- 
- ⭐代码演示1(无参成员方法)
- ⭐代码演示2(带参成员方法)
 
 
 
- 三、权限修饰符
- 
- 1、权限修饰符介绍
- 2、权限修饰符总结
 
- 四、成员变量和局部变量的区别
- 五、this关键字
- 
- 1、为什么要使用this?
- 2、this关键字介绍
- 
- 
- ⭐代码演示
 
 
- 
 
- 六、 构造方法
- 
- 1、什么是构造方法?
- 2、构造方法格式
- 3、构造方法执行的时机
- 4、构造方法的作用
- 5、构造方法的注意事项
- 6、无参构造和带参构造方法的使用
- 
- 
- ⭐代码演示
 
 
- 
- 7、构造方法生成的快捷键
- 8、setXxx/getXxx方法生成快捷键
- 9、set方法和带参构造方法都可以为成员变量赋值,有什么区别?
 
- 七、封装
- 
- 1、什么是封装?
- 2、封装在代码中的常见体现
- 3、封装小结
- 4、标准的封装例子
 
- 作者:KJ.JK
前言
           本文介绍JavaEE中的面向对象内容,包括什么是对象,怎么创建对象,构造方法使用详情,面向对象的封装特性,成员变量和局部变量的局部,以及this关键字用法,话不多说,直接上代码!!!!💪💪💪
一、面向对象是什么?
                   面向对象: 一种编程思想
------------------------------------------------------------------------------------------------------------------------------------------
为什么要学?
         因为这套思想来自生活,生活解决问题,就是一个个的对象在一起打交道,从而将问题解决
         我们写代码的时候,如果也使用这种思想,编程就会更加贴近生活
------------------------------------------------------------------------------------------------------------------------------------------
学什么:
              1.学习自己如何设计对象
              2.学习已有的对象怎么使用
二、类和对象是什么?
1、类和对象
           Java中想要创建对象,必须要先有类的存在
2、类的介绍
             什么是类:一组相关属性和行为的集合,将其看做是一张对象的设计图
             
                 
             类的特点: 1、类是对象的数据类型
    
                      2、类是具有相同属性和行为的一组对象的集合
3、类和对象的关系
               *类:是对现实生活中一种具有共同属性和行为的事物的抽象
               *对象:是可以看的到摸得着的真实存在的实体
                                         
               关系: 类是对象的设计图,需要根据类去创建对象
                 
           数量关系:一对多的关系,根据一个类,创建出多个对象                                
    
4、类的组成
      类的组成(属性和行为):
      
               类  --> 设计图 --> 描述一件生活中的事物
                如:
                    学生: class Student{}
                    老师: class Teacher{}
                    手机: class  Phone{}
------------------------------------------------------------------------------------------------------------------------------------------
      类当中写什么?
               属性(名词):
    
                     在代码中使用成员变量表示,成员变量和之前定义的变量一样,只不过位置在方法外
                         如:
                                   public class Phone {   
	                                       String brand;           //方法外面的 成员变量
	                                       int prices;
              行为(动词):
              
                     在代码中使用成员方法表示,成员方法和之前定义的方法一样,只不过不要 "static" 关键字
                         如:
                                      public void call() {        //成员方法
		                                  System.out.println("打电话");
	                                         }
                                       }
5、对象
🐘创建对象
                 格式:  类名 对象名  = new 类名();
                       
                 范例:  Student stu =new Student();
🐘使用对象属性(成员变量)
             格式:    对象名.变量名;
                       
             范例: 会结合打印,赋值使用
                       
                       
        如:
                    
           1.取出成员变量并打印
                     System.out.println(stu.name);  //null   字符串默认null
                     System.out.println(stu.age);   //0      整数默认0
           2.访问成员变量并赋值
                       stu.name="张三";
                       stu.age=20;
                       
⭐代码演示
//对象类
public class Student {
//属性:
    String  name;
    int age ;
//行为:
    public  void  study(){
        System.out.println("学生学习...");
    }
    public  void eat(){
        System.out.println("学生吃饭...");
    }
}
//测试类
public class StudentTest {
    public static void main(String[] args) {
        Student stu =new Student();
         //对象名.变量名;
        //取出成员变量并打印
        System.out.println(stu.name);  //null   字符串默认null
        System.out.println(stu.age);   //0      整数默认0
        System.out.println("-------------------------");
        //访问成员变量并赋值
        stu.name="张三";
        stu.age=20;
        System.out.println(stu.name);   //张三
        System.out.println(stu.age);    // 20
    }
}

扩展:打印对象名得到的是全类名
              Student stu =new Student();
              System.out.println(stu);   //Ooptest.Student@b4c966a   全类名@十六进制地址值
              
                                         //@b4c966a这个是这个对象在堆内存当中的内存地址

🐘使用对象属性(成员方法)
             格式:对象名.方法名(实际参数)
                         
             范例: 
                         stu.study();          //调用对象中的成员方法
                         stu.eat();
                               
------------------------------------------------------------------------------------------------------------------------------------------                               
 扩展:
      "成员方法的定义格式":
             
        格式:
              public void 方法名(){
                      //方法体
                        }
                               
         范例:
               public void show(){
                   ....
                  }
⭐代码演示1(无参成员方法)
//对象类
public class Student {
//无参成员方法:
    public  void  study(){
        System.out.println("学生学习...");
    }
    public  void eat(){
        System.out.println("学生吃饭...");
    }
}
//测试类
public class StudentTest {
    public static void main(String[] args) {
        Student stu =new Student();
      //调用对象中的成员方法
        stu.study();
        stu.eat();
    }
}

⭐代码演示2(带参成员方法)
//对象类
public class Phone {
//带参成员方法:
    public  void call(String name){
        System.out.println("给"+name+"打电话");
    }
    public  void sendMessage(String name){
        System.out.println("给"+name+"发信息");
    }
}
//测试类
public class PhoneTest {
    public static void main(String[] args) {
    
        Phone p= new Phone();
        p.call("张三");
        p.sendMessage("李四");
    }
}

三、权限修饰符
1、权限修饰符介绍
 权限修饰符(成员)
              private: 在同一个类中访问
              default(默认): 在同一个类中,同一个包下
              protected:在同一个类中,同一个包下,不同包的子类
              public:任意位置访问

2、权限修饰符总结
        * 成员变量一般私有
        * 类、方法、构造器一般公开
        * 如果该成员只希望本类访问,使用private修饰
        * 如果该成员只希望在本包和子类中访问,使用protected修饰
        
        * 如果该成员只希望在本包中访问,使用缺省(默认不写)修饰符
        * 常用的权限修饰符是public和private
         * public通常用于修饰类和方法, private用于修饰成员变量
四、成员变量和局部变量的区别
      区别                           成员变量                                 局部变量(不能加修饰符)
           
   类中位置不同                        方法外                                  方法里面
     
   初始化值不同	                   有默认初始化值                  没有默认初始化值,使用前必须完成赋值
      
   内存位置不同                  堆内存(变量在堆内存开空间)        "栈内存" (因为局部变量是在方法里面,而方法是需要被JVM调
                                                                       用,进去栈内存执行的,所以在栈内存里面)     
      
   生命周期不同             随着对象的创建而存在,随着对象的消失而消失     随着方法的调用而存在,随着方法的弹栈而消失
      
    作用域不同                                       都是在自己所在的大括号中
    
    
         例子:
         
              public class Student{                            public void setName(String name){
                         String name;                                       name="张三";
                         int age;                                        }
              }
           
    
  
五、this关键字
1、为什么要使用this?
       当局部变量和成员变量出现了重名问题,Java会根据就近原则,优先使用局部变量
       非要使用成员变量的话,可以使用this关键字进行区分
2、this关键字介绍
             this: 代表当前"类对象"的引用(地址)      //就是当前类对象的地址值
             
                         哪一个对象调用的this,this就代表哪一个对象
                                
   
                                
   如:
       下面的两个this是不一样的:
       
           Phone p1=new Phone();
           System.out.println("打印p1对象名----->"+p1);  //打印p1对象名----->mythis.Phone@34a245ab(这个是p1地址值)
           p1.show();     //this打印出来的也是p1的地址值
           Phone p2=new Phone();
           System.out.println("打印p2对象名----->"+p2);  //打印p2对象名----->mythis.Phone@7cc355be(这个是p2地址值)
           p2.show();    //this打印出来的也是p2的地址值
⭐代码演示
//对象类
class Phone{
    public  void show(){
        System.out.println(this);
    }
}
//测试类
public class PhoneTest {
    public static void main(String[] args) {
        Phone p1=new Phone();
        System.out.println("打印p1对象名----->"+p1);  //打印p1对象名----->mythis.Phone@34a245ab
        p1.show();
        System.out.println("-------------------------");
        Phone p2=new Phone();
        System.out.println("打印p2对象名----->"+p2);
        p2.show();
    }
}

六、 构造方法
1、什么是构造方法?
       介绍: 构建,创造对象的时候要执行的方法
2、构造方法格式
               格式: 
                       1. 方法名与类名相同,大小写也要一致
                       2.没有返回值类型,连void都没有
                       3.没有具体的返回值(不能由retrun带回结果数据)
  
   
例子:
     public Student(){
        System.out.println("这是一个无参构造方法");
              }
           
           
      public  Student(String name,int age){
          this.name=name;  
          this.age=age;
          System.out.println("这是一个带参构造方法");
            }    
3、构造方法执行的时机
   执行时机:  
               1. 在创建对象的时候,被系统自动调用执行
                    
               2. 每创建一次,就会执行一次构造方法
               3. 不能手动调用构造方法
4、构造方法的作用
                    1.本质的作用:用于创建对象
                    
                    2.结合执行时机产生的作用: 可以在创建对象的时候,给成员变量初始化
                    
  如:
        Student stu=new Student("张三",23);   //创建对象的时候,给成员变量初始化
        System.out.println(stu.name+"---"+stu.age);
5、构造方法的注意事项
           1. 一个类中如果没有写任何的构造方法,系统将给出一个[默认的][无参数的]构造方法,保证你可以创建对象
           2. 一旦手动给出了构造方法,系统将不会提供默认的构造方法了,这个时候就必须要赋值了
           3.构造方法也是方法,允许重载关系出现
           4.构造方法不允许手动调用,只有在new 对象的时候执行
                           这样子是不行的:  stu.Student();
 // 建议:无参构造方法,和带参数构造方法,都自己手动给出
6、无参构造和带参构造方法的使用
                  
            1.无参构造方法创建对象,通过setXxx方法赋值
                    
                 如:
                     StudentTestD  stu =new StudentTestD();
                     stu.setAge(23);
                     stu.setName("张三");
                     stu.show();
------------------------------------------------------------------------------------------------------------------------------------------
                     
            2.带参构造方法创建对象,在创建对象时直接赋值      
            
                如:
                   StudentTestD stu1=new StudentTestD("李四",20);  //输入的顺序和你在构造方法写的顺序一样
                   stu1.show();
⭐代码演示
//对象类
public class StudentTestD {
    private  String name;
    private  int age;
    public  void show(){
        System.out.println("姓名"+name+",年龄为:"+age);
    }
    public  StudentTestD(){
    }
    public  StudentTestD(String name,int age){
        this.name=name;
        this.age=age;
    }
    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;
    }
}
public class StudentTestDemo {
    public static void main(String[] args) {
        //1.无参构造方法创建对象,通过setXxx方法赋值
        StudentTestD  stu =new StudentTestD();
        stu.setAge(23);
        stu.setName("张三");
        stu.show();
        System.out.println("------------------------------");
       //2.带参构造方法创建对象,在创建对象时直接赋值
        StudentTestD stu1=new StudentTestD("李四",20);  //输入的顺序和你在构造方法写的顺序一样
        stu1.show();
    }
}

7、构造方法生成的快捷键
第一步
 
第二步
 
第三步
 
8、setXxx/getXxx方法生成快捷键
第一步
 
第二步
 
9、set方法和带参构造方法都可以为成员变量赋值,有什么区别?
               带参构造方法只能在创建对象的时候,完成一次赋值
                      
               set方法可以多次调用,反复去修改对象的属性的值
七、封装
1、什么是封装?
           隐藏实现细节,仅对外暴露公共的访问方式       
2、封装在代码中的常见体现


3、封装小结
       *隐藏实现细节,仅对外暴露公共的访问方式
                          
                将属性抽取到"类"中,这是"对数据"的一种"封装"
                             
                将代码抽取到"方法"中,这是"对代码"功能的一种"封装"    
4、标准的封装例子
//对象类
public class Student {
    private  int age;
    public void setAge(int age){
        if(age>=0&&age<=100){
            this.age=age;
        }else {
            System.out.println("方法有错");
        }
    }
    public int getAge(){
        return  age;
    }
}
public class StudentTest {
    /*
          标准的JavaBean :
                    1.所有的成员变量 使用 private 修饰
                    2.提供【空参】【带参】构造方法
                    3.针对于私有的成员变量,提供: setXxx \ getXxx方法
                             set: 设置\赋值
                             get: 获取
                    情况: 成员变量,没有进行数据的安全校验
                           有可能记录到一些错误的数据,如负数的年龄
                    解决:
                           1.成员变量私有化
                                错误的数据进不来了,但同时,正确的数据也进不来了
                           2.提供对应的set\get 方法
     */
    public static void main(String[] args) {
        Student stu=new Student();
        stu.setAge(20);
        System.out.println(stu.getAge());
    }
}

作者:KJ.JK
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习
相关文章
暂无评论...
 
                             
                         
                            