[Backgammon] Java基础学习入门(面向对象)

1.面向对象

3.1 什么是面向对象

高级语言的分枝

根据面向的内容,方式的不同:面向对象,面向过程

3.2 面向对象,面向过程的区别和联系

例子:人开车

面向过程

人:会不会开车 怎么开车

车:车是怎么会走的

人才开车

面对过程是微观上解决问题的方式

面向对象

人去-》开车

人是对象,车也是对象

面向对象是宏观上解决问题的方式,不用去管人会不会开车这种小问题

1.3 对象

人是对象,车是对象,茶杯是对象。

在Java中万物万事结尾对象,在显示生活中的所有东西都可以理解是一个个的对象。

1.4 如何编写类以及对象

编写类

  • 外在的表现形式:姓名、性别、身高、体重、籍贯 : 通过成员变量来实现的
  • 内在的功能:能力:能够做什么:吃饭、睡觉、打豆豆、买烟、开车 通过方法实现的
  • 成员变量也好、方法也罢都是非静态修饰的

编写对象

  • 类是一个 引用类型,我们定义的所有的类都是一个自定义的数据类型,这些数据类型都是引用类型
  • 凡是引用类型在创建时对象时必须通过使用new关键词来创建
类型名称  变量名  =   new  类型名称()

new关键词的作用

  • 开空间(堆内存中开辟空间)
  • 赋初值
  • 指向引用

1.5 构造器

① 构造器的声明

public 类名(){
    //构造器内执行的语句
}
  • 构造器的方法名称和类名相同(首字母一定大写)
  • 该方法不需要返回值
  • 内部不需要写明返回值
    ②:构造器的注意事项
    默认
  • 在任意的一个类中,如果不存在构造器,那么java会自动填充一个空参数的构造器
    带参数的构造器
public class Demo{
    String name;
    public Demo(){//空参构造器
        
    }
    public Demo(String yname){//带参构造器
        name = yname;
    }
}
  • 构造器也存在重载

1.6 this 关键词

  • this关键词的写法
  • this.
  1. 代表当前对象的。谁在调用谁是当前对象。
public class Dog{
    String name;
    public Dog(String name){
        this.name = name;
		this.run();
    }
    public void run(){
        System.out.println(this.name+"正在run");
    }
}

public class DogTest{
    public static void main(String[] args){
        
        //调用带参构造器
       Dog d= new Dog("小狗");
    }
}//小狗正在run

当出现同名变量时,this.的作用是用来区分同名变量。

  • this()

用来实现构造器之间的互向调用。

public class Dog(){
    this("101");//this()调用了带参数的构造器    
}
 public Dog(String name){
        this.name = name;
 }

this()只能在构造器中使用,必须保证在构造器的第一行语句

1.7 static 关键词

static 称为 静态的 共享的

1:在static中使用非static修饰的

public class StaticTest{
    int num=10;
    public static void main(String[] args){
        StaticTest t=new StaticTest();
        System.out.println(t.num);
    }
}

创建当前类的对象,通过对象=方法访问非静态内容。

2:在非static中使用static修饰的

public class StaticTest{
   static  int num=10;
    public static void main(String[] args){
        StaticTest t=new StaticTest();
        t.add();
        public void add();//非static修饰的方法
        System.out.println(num);
    }
}
public class Test{
    public static void main(String[] args){
   System.out.println(StaticTest.num);
    }
}
  • 在一个类中非静态内容访问静态内容直接通过变量名或者是方法名称就可以访问了
  • 在其他类中访问静态内容可以直接通过类名.方法名/变量名直接访问。