面向对象

面向对象语法

1. 匿名对象

(1) 匿名对象的概念

(2) 匿名对象的用途

(3) 对象的生命周期

2. static关键字

(1) static关键字修饰符【类级别】【对象级别】

(2) static关键字可修饰内容

① 字段

② 普通方法

③ 

1) 字段

2) 普通方法

3) 构造方法

(3) static修饰字段的效果

① 结论:staitc修饰的字段:被改类的所有对象共享:

② static修饰那些字段合适

1) 名字不合适

2) 共用的就合适  PI=3.14  地球的人口数量

3) 一般 public static final PI = 3.14  这种字段,常量字段

(4) static修饰方法的效果

① 工具方法,方便使用

(5) 类级别,对象级别

① 类和对象之分

1) 类:宽泛的指代一类事物:代表了类....

2) 对象:类中的一个具体的个体

② 代码区分【访问区分】

1) 静态字段,静态方法

a. 类名.去访问

2) 非静态的字段及方法

a. 对象名.去访问

③ 代码区分

1) 对象其实也可以访问静态字段

a. System.out.println(Student.name);

b. System.out.println(new Student().name);

c. 编译之后还是类名.字段名

2) 静态的字段,对象可以访问

a. 因为类的东西,每个对象都有.............

3) 非静态的字段,类名不可以访问

a. 对象的东西,不是其他人可以访问的

(6) 变量的分类详解【了解】

class Studnet{

static int age;//静态字段

String name;//普通字段

void add(){

int higth = 15;//局部变量

}

}

这些都变量:

成员变量

age: 类变量:通过类访问

name:实例变量【instance--对象】

         局部变量

higth:局部变量

1.  分类详解:

称呼        位置   是否有static      生命周期(开始)         生命周期(结束)

类变量     类中   √                类被加载的时候放入JVM           类被卸载的时候

实例变量    类中                     创建对象的时候             对象被销毁

局部变量    方法内部[形参,代码块]   方法被调用的时候           方法调用完毕

  理解:帮助理解以上内容     

1. 类被加载的时候 把类的字节码class文件  加载到  JVM中;

2. 局部变量的作用  一般都是方法中,为了辅助方法完成功能而临时定义的变量;

1. 类变量   static修饰的成员变量(字段);

2. 实例变量: 没有static修饰的成员变量(字段);

3. 以下的说法尽量少用(了解)

类成员 静态的字段和方法

实例成员:非静态的字段和方法

3. 

(1) 概念

(2) 包的声明:为了管理将类放入到包

① package cn.itsourc.oa.domain;

1) class Student--编译之后字节码--放入domain

2) package cn;

3) class Person

② 注意事项

1) 声明必须放在类文件的最上面

2) 规范包名命名 都是小写

(3) 注意目前包的声明,导入,原生命令的方式去使用

1.  编译(请在命令提示符窗口中进行)

语法 javac -d . 源文件名.java        // 编译的时候不需要包的!

实例 javac -d . Test.java

F:>javac -d . Test.java

F:>

2. 运行(请在命令提示符窗口中进行)

语法 java 包名.子包名.类名

实例 java cn.itsource.test.PackageDemo1

类的完全限定名  包名.子包名.类名

F:>java cn.itsource.crm.oa.domain.Test

Hello 小姐姐你好呀

(4) 包的导入:为了从包里面包类拿出来使用

① import

4. 封装

(1) 概念:封装,安全保密,透气

 

(2) 封装通过权限来做

(3) 权限又是什么概念

(4) 权限修饰符给Java的东西,提供权限

① Java关键字,修饰符

② private < 默认不写 < protected < public

1) private :  私有的,除了自己,谁都不能用

2) public :   公共的,谁都可以用!

(5) 封装步骤

(6) 封装的注意事项

5. this关键字

1) 官方:this所在的函数,正在被谁调用this就指代谁

2) 民间 this当前被对象持有,this就指代谁,模板---->复印件

使用场景

1. 解决局部变量和成员变量的二义性   ---  get  set 方法中的应用[在get/set可以写this]

2. 作为返回值返回   this持有对象地址,表示该类的一个对象即是一个数据

3. 作为参数传递  

本类中构造方法之间的相互调用       

public class _14ThisDemo {
    /*
        this的用途
            1.区分字段的二义性
            2.this作为返回值
            3.this也可以作为参数传递
            4.this在一个类中,构造方法的第一句调用其他的构造方法
    */
    public static void main(String[] args){

        Student stu = new Student();
        
        System.out.println( stu);
        //调用returnStu() 返回了当前对象的地址值...
        System.out.println( stu.returnStu());
        //Java代码链式写法
        stu.add(10,20).add(18,54).add(17,49);


        stu = new Student("二狗",19);

        System.out.println(stu.getName()+"-------"+stu.getAge());
    }
}
//设计代码
class Student{
    private String name;
    private int age;
    //构造方法功能:创建对象,初始化name字段的值
    Student(String name){
        System.out.println("--------------------");
        this.name = name;
    }
    //创建对象,并初始化name 及age的值!
    Student(String name,int age){
        //this.name = name;
        this(name);//4
        //new Student(name);//会诞生一个新的对象
        this.age = age;
        
    }
    public void setName(String name){
        this.name = name;//1
        System.out.println("this:"+this);
    }
    public Student returnStu(){//【设计代码的时候】,this作为了返回值
        return this;//2
    }
    public Student add(int a,int b){//2
        System.out.println(a+b);

        eat(this);//3
        return this;
    }
    public void eat(Student stu){
        System.out.println("如果使用了该方法,必须传入一个Student对象");
    }
    public String getName(){
        return name;
    }
    public void setAge(int a){
        age = a;
    }
    public int getAge(){
        return age;
    }
    Student(){
    }
}
View Code
原文地址:https://www.cnblogs.com/xiaoruirui/p/11188175.html