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());
        }
    }
    
  • 相关阅读:
    android 样式开发
    Android studio 开发环境搭建
    nodejs+express 4.x笔记
    C#: switch语句的重构『网摘』
    从实例谈OOP、工厂模式和重构
    ASP.NET FileUpload 上传文件类型验证
    asp.net 网页中播放 flash 和flv
    数据库设计中主键问题
    修改Sqlserver实例默认排序规则
    查看sqlserver被锁的表以及如何解锁
  • 原文地址:https://www.cnblogs.com/hq82/p/11658774.html
Copyright © 2011-2022 走看看