【Java入门】-- Java基础详解之 [Java面向对象编程(初级)]

目录

1.类与对象

2.类与对象的区别与联系

3.对象在JVM内存中的存在形式(重要)

4.属性/成员变量/字段

5.如何创建对象

6.类和对象的内存分配机制

7.面向对象的三大特征?

8.面向对象和面向过程?

9.匿名对象

10.方法(method)

11.方法的重载(overload)

12.可变形参

13.递归

14.封装

15.四种访问权限修饰符

16.构造器

17.什么是javaBean

18.this是什么?

19.package和import


1.类与对象

抛砖引玉,一个小动物的问题引出类与对象:小明养了两只小狗狗,一只名字叫小黑,今年2岁,黑色。还有一只叫小白,4岁,白色。输入小狗名字就显示狗狗的名字,年龄,颜色。如果输入的名字错误,就显示没有这个狗狗。

  • 使用现有的技术解决:
    • 定义变量方式解决
    • 使用数组解决
  • 使用这两个技术解决问题的痛点:
    • 不利于数据的管理,效率低。所以Java设计者引入了类与对象的概念,解决新的需求。
  • 代码:
    public class Object01{
    //小明养了两只小狗狗,一只名字叫小黑,今年2岁,黑色。还有一只叫小白,4岁,白色。
    //输入小狗名字就显示狗狗的名字,年龄,颜色。如果输入的名字错误,就显示没有这个狗狗。
        public static void main(String[] args){
            //如何使用面向对象(OOP)解决
            //1.创建一只狗狗对象(实例化)  new Cat();
            //Dog dog1 = new Dog(); 把创建的狗狗赋给cat1
            //dog1就是一个对象了
        
            //创建第一只狗狗
            Dog dog1 = new Dog();
            dog1.name = "小黑";
            dog1.age = 2;
            dog1.color = "黑色";
              
            //创建第二只狗狗
            Dog dog2 = new Dog();
            dog2.name = "小白";
            dog2.age = 4;
            dog2.color = "白色";
            
            System.out.println("第一只狗狗的信息:"+dog1.name+","+dog1.age+"岁,"+dog1.color);
            System.out.println("第二只狗狗的信息:"+dog2.name+","+dog2.age+"岁,"+dog2.color);
        }
    }
    
    //定义狗狗类
    class dog{
        String name;
        int age;
        String color;
    }

2.类与对象的区别与联系

  •  类是抽象的,是概念,代表一类事物,如动物,植物等...

  • 对象是具体的,实际的,代表一个具体的事务。

  • 类是对象的模板,对象是类其中的一个实例。

3.对象在JVM内存中的存在形式(重要)

【Java入门】-- Java基础详解之 [Java面向对象编程(初级)]_第1张图片

4.属性/成员变量/字段

 从概念或叫法上看:成员变量 = 属性 = field(字段)

属性是一个类的组成部分,一般是基本数据类型,也可以是引用数据类型。

注意事项:

  • 属性的定义语法同变量。例如:访问修饰符  属性类型   属性名;
    访问修饰符有四种:public、proctected、默认、private
  • 属性的定义的类型可以是基本数据类型或引用数据类型。
  • 属性不赋值,有默认值。

byte 0  short 0  int 0  long 0  flout 0.0  double 0.0  boolean false  String null   char \u0000

5.如何创建对象

  •  先声明再创建
    Cat cat;  //声明对象cat
    cat = new  Cat();  //创建
  • 直接创建
    Cat cat = new Cat();

如何访问属性:

基本语法:对象名.属性名     如:cat.name;

6.类和对象的内存分配机制

  1. Java内存的结构分析
    1. 栈:一般存放基本数据类型(局部变量)
    2. 堆:存放对象(Cat cat,数组等)
    3. 方法区:常量池(常量,如字符串),类加载信息。

7.面向对象的三大特征?

  • 继承:继承是指一个类(称为子类或派生类)可以继承另一个类(称为父类或基类)的属性和方法。子类可以重用父类的代码,并且可以在此基础上进行扩展或修改。通过继承,子类可以获得父类的特性,形成类之间的层次结构。这样可以提高代码的可重用性和灵活性,减少重复编写代码的工作量。
  • 封装:封装是将数据和对数据的操作封装到一个类中,对外部隐藏具体的实现细节,只对外暴露必要的接口。通过封装,我们可以控制对数据的访问方式,提供统一的接口来操作数据,从而提高代码的可读性、可维护性和安全性。封装还有助于实现代码的模块化和解耦。
  • 多态:多态是指同一个方法可以在不同的对象上具有不同的行为。在多态的使用中,我们可以使用父类类型的引用指向子类的对象。通过多态机制,我们可以实现动态绑定和运行时的方法调用。多态提高了代码的灵活性和可扩展性,使得程序能够以更加通用和抽象的方式进行编写。

8.面向对象和面向过程?

面向过程(POP):强调的是功能行为,以函数为最小的单位,考虑怎么做。

面向对象(OOP):将功能封装进对象,强调具备了功能的对象,以类\对象为最小单位,考虑谁去做。

9.匿名对象

我们可以不定义对象的句柄,直接调用这个对象的方法。例如:new Cat().start();
注意:如果一个对象的方法只需要一次调用,那么可以使用匿名对象。

10.方法(method)

  • 方法是类或者对象的"行为“ ,用来完成某个操作;方法不能独立存在,必须定义在类中。
  • 方法的声明格式:
    访问修饰符  返回值类型  方法名(参数类型 形参,.....){
             方法体;
            return  返回值;(返回值类型void,没有返回值)
  • }
  • 举例:
    public class Car{
        private int age;
        public int getAge(){
           return age;     
        }
    }

注意事项:

  1. 方法被调用一次就会执行一次。
  2. 没有具体返回值的情况,返回值类型用void,方法体就不必用return。
  3. 不可用在方法内部定义方法。 

11.方法的重载(overload)

重载就是允许存在一个以上的同名方法,只要他们参数个数或类型不同。

特点:

与返回值类型无关,参数列表不同。

例如:

int  add(int a,int b){return a+b;}

int add(int a){return x;}

int add(float a,float b){return a+b;}

12.可变形参

JDK5以前采用数组形参来定义方法,传入多个同类型的变量

public static void test(int a,String[] aa);

JDK5以后采用可变个数形参来定义方法

public static void test(int a, String...aa);

注意:

  • 声明格式:方法名(参数类型名...参数名)。
  • 可变参数:方法参数部分指定类型的参数个数是可变多个:0个,1个或多个。
  • 可变个数形参的方法与同名方法之间彼此构成重载。 
  • 可变参数方法的使用与方法参数部分使用数组一致。
  • 同一个方法的形参上只能声明一个可变参数。

13.递归

 简单来说就是一个方法体调用它自己。

递归方法包含了一种隐式的循环,它会重复执行某段代码。

递归一定要向已知的方法递归,否则递归就变成了无穷递归,类似死循环.

举例:

//计算1--100自然数的和

public int sum(int num){

        if(num == 1){

               return 1;        

        }else{

                return num + sum(num -1) ;       

        }

}

14.封装

  •  为什么需要封装?有什么用?
    • 比如我要使用电脑,只需要开机进入系统就能用了,没有必要了解系统底层或硬件内结构
  • 程序设计追求高内聚,低耦合。
    • 高内聚是指类的内部数据操作细节自己完成,不允许外部干涉。
    • 低耦合:仅对外暴露少量的方法使用。
  • 隐藏方法内部,之对外公开简单的接口。便于外界调用,提高系统的可扩展性,可维护性。

15.四种访问权限修饰符

【Java入门】-- Java基础详解之 [Java面向对象编程(初级)]_第2张图片

class只能使用public,默认

public 类可以在任何地方访问。

默认类只能被同一个包的类访问。

16.构造器

构造器的特征:

  • 具有类相同的名称。
  • 不声明返回值类型
  • 不能被static,final,synchronized,abstract,native修饰,不能有return语句。

构造器作用:

创建对象,初始化对象

注意:

  • Java语言中每个类都有构造器
  • 默认构造器的修饰符与类的修饰符一致。
  • 一旦显示定义了构造器,系统不再提供默认构造器。
  • 一个类可以创建多个重载的构造器。
  • 父类构造器不可被继承。

属性赋值的过程:

默认初始化--》显式初始化--》构造器初始化--》通过"对象.属性"或"对象.方法"赋值

17.什么是javaBean

  • JavaBean是Java写成的可重用组件。
  • 所谓JavaBean指的是符合如下标准的Java类:
    • 类是公共的
    • 有一个无参的公共构造器
    • 有属性,且有get,set方法
  • 用户可以使用JavaBean将功能,处理,值,数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部JSP页面,Servlet,其他JavaBean,applet程序或者应用来使用这些对象。用户可以认为javaBean提供了一种随时可以复制粘贴的功能,而不用关心变化。

举例:

【Java入门】-- Java基础详解之 [Java面向对象编程(初级)]_第3张图片

18.this是什么?

this可以调用类的属性,方法,构造器。

它可以在方法内部使用,这个方法所属对象的引用。

在构造器内部使用,表示该构造器正在初始化的对象。

注意:

  • 可以在类的构造器使用”this(形参列表)“的方式,调用本类中重载的其他构造器!
  • 构造器中不能通过this(形参列表)调用自身构造器
  • this(形参列表)必须声明在类的构造器首行!
  • 类的构造器中,最多只能声明一个this(形参列表)

19.package和import

包(package):

  • package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包
    格式:package  顶层包.子包名;
  • 包对应于文件系统的目录,package语句中,用“.”来指明包(目录)的层次;
  • 包通常用小写单词标识。
  • 包的作用:
    • 包可以包含类和子包,划分项目层次,便于管理
    • 解决类命名冲突问题
    • 控制访问权限

导入 (import):

为使用定义在不同包中的Java类,需要用import语句引入指定包层次下所需的类或全部类

语法:import  包名.类名;

你可能感兴趣的:(Java入门,java,开发语言)