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

        Java面向对象核心:类与对象

    •   类是对某一类事物的共性的抽象概念;而对象描述的是一个具体的产物(类是一个模板,而对象才是类可以使用的实例,先有类才有对象)
    •   类是我们Java程序中最小的执行单元;面向对象思想开发(方法).
    •         python:函数 ;面向对象+函数式编程

      1.类使用class关键字修饰;类名使用首字母大写的写法;一个源文件不能代表一个类,原因是一个源文件中可以存放多个类

      2.对象通过new关键字创建的 :类名  对象名=new 类名();

      3.类中的成员变量具有什么特点,和我们之前在main方法中声明变量有什么不同?

    •     成员变量是具备默认值的
    •     访问修饰符修饰 static private public

      4.类对象的实例化: new关键字

    •              clone克隆
    •              反射的:newInstance()
    •              代理: Proxy.newInstance()

      5.对象数组:就是数组里的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋给数组就行了。

    Java中的四种访问级别:修饰符

    •     public:公共 范围是最广的 使用public关键字修饰的任何成员都可以进行调用
    •     private:私有的 范围是最窄的 使用private修饰的成员只能在本身类中进行调用
    •     default:默认不编写访问修饰符的权限 在同级包中的其他类可以使用 不能跨包使用
    •     protected:同包及子类可以访问(受保护的)

    成员变量:修饰实体的静态特征,成员变量拥有默认值 

    •     数值类型的变量:0
    •     Boolean:false
    •     String:null
    •     数组:null

    成员方法: 访问修饰符 返回值类型 方法名(参数){方法体} 声明*

      什么是方法的返回值类型:函数执行结束后的结果类型 void 代表为空返回值  

    • return
    • 返回值 
    • 结束方法的运行(return后不能编写任何代码)

        什么是参数:方法执行的必备条件,参数的个数没有限制

    调用阶段:通过对象调用函数  对象名.函数名

    this关键字:当前类对象

           1.当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量。(this是当前对象自己)

              2.把自己当作参数传递时,也可以用this.(this作当前参数进行传递)

    static关键字: 是我们main函数的一种修饰符( 静态修饰符:标识成员可以被类直接调用)

    • 静态成员变量
    • 静态成员方法
    • 静态代码块
    • 静态导包      
      package cn.biji;
              
              public class StatinTest {
              
                  
                  static int number=10;//静态成员变量
                  
                  public static void main(String[] args) {
                          
              
                  }
                  public static void sayHello(String name){//静态函数
                      System.out.println(name+"您好");
                  }    
                  static{
                      System.out.println("这是静态代码....");//静态代码块
                  }
                  
                  static class innerClass{//静态内部类
                      
                  }
              }

      static:可以被类名直接调用  

    •           类名.属性名
    •        类名.方法名   

         static与非static之间的重要区别:

    区别1:

    static修饰的成员是随着类的加载而加载(优先)

    非static成员是随着对象的创建而加载

    区别2:

    静态方法|静态代码块只能调用静态成员,非静态成员是不能直接调用的,创建对象(不能使用this关键字)

    非静态方法可以直接调用非静态成员,也可以调用静态成员.类的对象进行调用静态成员

    区别3:

    静态成员对于多个对象而言是共享的

    非静态成员对于多个对象是彼此独立的

     封装:把类的公有属性定义在内部的过程被称之为封装

     可以封装变量和方法

     为了保证字段的隐私性: 我们选择使用private修饰符修饰变量

      声明对应的get/set方法对变量的读写操作提供支持(MyEclipse中生成get set的快捷键 alt+shift+s  点击R键  选择对应的字段 生成get/set)

    public static void main(String[] args) {
           Person p=new Person();
           Person p1=new Person();
           p.setName("张三");
           p.setAge(16);
           System.out.println("我叫:"+p.getName()+",今年:"+p.getAge());
           System.out.println("我叫:"+p1.getName()+",今年:"+p1.getAge()); 
            }

    package cn.bdqn;
    
      public class Person {
             private String name="无名氏";
            private int age=18;
       
    
     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;
     }

     不定长参数:方法:参数 不定长参数(0~N)(语法:类型...参数名 )

     不定长参数的要求:必须写在参数列表的末尾

     递归函数:在一定程度上可以为循环

    1.  自己调用自己本身的方法被称为递归函数
    2. 最重要的就是递归何时结束


     import java.util.Scanner;
        
        public class ZuoYe01 {
        
            /**
             * @param args
             */
            public static void main(String[] args) {
                System.out.println("请输入项数");
                Scanner inScanner=new Scanner(System.in);
                int n=inScanner.nextInt();
                System.out.println(f(n));
                
            }
                public static int f(int n){
                        if (n == 1 || n == 2) {
                            return 1;
                            } else {
                            return f(n-1)+f(n-2);
                            }
                        
        }
            
        }

    方法重载:保证同名方法的参数不同: 个数 类型 顺序

    和访问修饰符 返回值类型无关

     

  • 相关阅读:
    python hmac解密
    pymongo加索引以及查看索引例子
    语音-数字中继-E1-学习帖
    Partition does not start on physical sector boundary
    吃自助餐怎么样一个顺序吃法才合算?
    关于ROS证书导入的步骤
    MikroTik-ROS-无线设备传输距离
    这个移动通讯中 DB 、DBm 、瓦的基本知识的问题:
    涨姿势 | 无线通讯距离现场评估知多少?
    linux下生成https的crt和key证书
  • 原文地址:https://www.cnblogs.com/big-data-sky/p/10939840.html
Copyright © 2011-2022 走看看