zoukankan      html  css  js  c++  java
  • 8. java 面向对象

    一、面向对象特征

    1. 封装

    • 方法就是一种封装
    • 关键字private也是一种封装
    封装就是讲一些逻辑细节信息隐藏起来,对于外界不可见;外界只需调用我即可;
    一旦使用了private进行修饰,那么本类当中仍然可以随意访问。但,超出了本类范围就不行了;
    间接访问private成员变量,就是定义一对Getter/Setter方法;必须叫setXxx、getXxx命名规则;
    对于Getter来说,不能有参数,返回值类型和成员变量对应;
    对应Setter来说,不能有返回值,参数类型和成员变量对应;
    对于基本类型当中的Boolean值,Getter方法一定要写成isXxx形式,而Setter不变
    
    public class Student {
        private int age;
        String name;
        public void show(){
            System.out.println("我年龄"+age);
        }
        // 这个成员方法,专门用于向age设置数据
        public void setAge(int num){
            age = num;
        }
        // 这个成员方法,专门用于获取age数据
        public void setAge(int num){
            return age;
        }
    }
    
    public class Demo {
        public static void main(String[] args) {
           
        }
        
        public static void method(Phone param){
            System.out.println(param.name);
        }
    }
    
    // this关键字作用
    
    当方法的局部变量和类的成员变量重名的时候,根据"就近原则",优先使用局部变量;如果需要访问本类当中的成员变量,需要使用格式->this.成员变量名
    

    2. 继承

    3. 多态

    二、类和对象关系

    1. 类

    • 类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。
    • 属性:该事物的状态信息
    • 行为:该事物能够做什么

    2. 对象

    ​ 是一类事物的具体实现,对象是类的一个实例,必然具备该类事物的属性和行为。

    java类当中
     - 成员变量(属性)
     - 成员方法(行为)
        
    注意事项:
        成员变量定义在类当中,方法外面
     	成员方法需删除static
    

    3. 对象的创建和使用

    通常情况下,一个类并不能直接使用,需要根据类创建一个对象,才能使用。
    1. 导包
    	import 包名称.类名称;
    	对于和当前类属于同一个包的情况,可以省略导包语句
    2. 创建
    	类名称 对象名 = new 类名称();
    	Student stu = new Student();
    3. 使用
    	使用成员变量,对象名.成员变量名
    	使用成员方法,对象名.成员方法名(参数)
    

    4. 使用对象类型作为方法参数

    // phone.java
    package cn.test.obj;
    
    public class Phone {
        int number;
        String name;
        public void call(String who){
            System.out.println(who +"带电话给奥巴巴");
        }
    }
    
    // Demo.java
    package cn.test.obj;
    
    public class Demo {
        public static void main(String[] args) {
            Phone ph = new Phone();
            ph.number = 18900000;
            ph.name = "apple";
            method(ph);
        }
        
        public static void method(Phone param){
            System.out.println(param.name);
        }
    }
    

    5. 使用对象类型作为方法返回值

    // phone.java
    package cn.test.obj;
    
    public class Phone {
        int number;
        String name;
        public void call(String who){
            System.out.println(who +"带电话给奥巴巴");
        }
    }
    
    // Demo.java
    package cn.test.obj;
    
    public class Demo {
        public static void main(String[] args) {
            Phone two = new getPhone();
            System.out.println(two.number);
            System.out.println(two.name);        
        }
        
        public static Phone getPhone(){
            Phone one = new Phone();
            one.number = 18900000;
            one.name = "apple";
            return one
        }
    }
    

    三、成员变量和局部变量区别

    • 定义位置不同

      • 成员变量:在方法外部,直接写在类中
      • 局部变量:在方法内部
    • 作用范围不同

      • 成员变量:整个类全都可以使用
      • 局部变量:只有方法当中可以使用,出了方法就不能再使用了
    • 默认值不同

      • 成员变量:有默认值,和数组一样
      • 局部变量:没有默认值;想使用,必须手动进行赋值
    • 内存位置不同

      • 成员变量:堆内存
      • 局部变量:栈内存
    • 生命周期不同

      • 成员变量:随对象创建而诞生,随对象被垃圾回收而消失
      • 局部变量:随方法进栈而诞生,随方法出栈而消失

    四、构造方法

    ​ 构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法。

    // 格式
    public 类名称(参数类型 参数名称){
        方法体;
    }
    注意事项:
    1. 构造方法的名称必须和所在的类名称完全一样,就连大小写也要一样
    2. 构造方法不要写返回值类型,连void都不写
    3. 如果没写构造方法,编译器会默认生成构造方法,没有参数、方法体什么都不做
    4. 构造方法不能return一个具体的返回值
    5. 构造方法也是可以重载的
    
    public class Student{
        private String name;
        private int age;
        
        public Student(){
            System.out.println("构造方法执行!");
    	}
    	
    	public Student(String name, int age){
    		this.name = name;
            this.age = age;
            System.out.println("构造方法执行!");
    	}
    	
    	public void setName(String name){
    		this.name = name;
    	}
    	
    	public int getName(){
    		return name;
    	}
    	
    	public void setAge(int age){
    		this.age = age;
    	}
    	
    	public int getAge(){
    		return age;
    	}
    }
    
    public class Demo {
        public static void main(String[] args) {
        	// new对象就是在调用构造方法
        	Student stu = new Student();
        	// 打印->构造方法执行!
            Student stu2 = new Student("Helo", 10)
            System.out.println("姓名" + stu2.getName() + "年龄" + stu2.getAge());
            stu2.setAge(12);
        }
    }
    

    五、标准类

    /*
        一个标准的类通常拥有下面四个组成部分:
        1. 所有成员变量都要使用private关键字休息
        2. 为每个成员变量编写一对Getter/Setter方法
        3. 编写一个无参数构造方法
        4. 编写一个全参数构造方法
        这个标准的类也叫 Java Bean
    */
    
    public class Student{
        private String name;
        private int age;
        自动生成Geter/Setter:idea->顶部栏[Code]->Generate->Getter/Setter->把变量选中
        自动生成构造方法:idea->顶部栏[Code]->Generate->Constructor->Select None
        自动生成构造方法:idea->顶部栏[Code]->Generate->Constructor->把变量选中
    }
    
    public class Demo01{
        public static void main(String[] args){
            Student stu01 = new Student();
            stu01.setName("jone");
            System.out.println("姓名" + stu01.getName());
        }
    }
    
  • 相关阅读:
    node.js 安装后怎么打开 node.js 命令框
    thinkPHP5 where多条件查询
    网站title中的图标
    第一次写博客
    Solution to copy paste not working in Remote Desktop
    The operation could not be completed. (Microsoft.Dynamics.BusinessConnectorNet)
    The package failed to load due to error 0xC0011008
    VS2013常用快捷键
    微软Dynamics AX的三层架构
    怎样在TFS(Team Foundation Server)中链接团队项目
  • 原文地址:https://www.cnblogs.com/hq82/p/11658774.html
Copyright © 2011-2022 走看看