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);
                        }
                    
    }
        
    }

 

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

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

 

 

posted on 2019-05-28 19:53  走走马观观花  阅读(134)  评论(0编辑  收藏  举报