Java面向对象核心知识(一)

Java面向对象核心知识(二)

目录

一、对象和类的概念

二、成员变量初始化问题

三、如何在内存中区分类和对象

四、对象的创建和使用

五、类和类之间的几种关系

六、构造方法(函数)

七、Java约定俗称的命名规则:

八、方法重载(overload)

九、this关键字

十、static关键字(可用于计数)

十一、package和import语句(Eclipse和idea开发会自动生成)

十二、JDK中主要的包介绍

十三、打包成jar包

十四、Java权限修饰符

十五、继承

补充:Java面向对象基本概念-引用



一、对象和类的概念

1.对象是Java程序的核心,在Java程序中“万事万物皆对象(必须首先定义类,你才能有对象)。”

2.对象可以看成是静态属性(成员变量)和动态属性(方法)的封装体。

3.是用来创建同一类型的对象的“模板”,在一个类中定义了该类对象所应具有的成员变量以及方法。

4.J2SDK提供了很多类供编程人员使用,编程人员也可以定义自己的类。

5.成员变量等于属性,方法等于函数。

6.补充:Java中的对象是通过引用对其操作的。

 

二、成员变量初始化问题

在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化,成员变量的作用范围为整个类体。

 

三、如何在内存中区分类和对象

1.类是静态的概念放在代码区。

2.对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量),而方法只有一份,执行的时候才占用内存。

 

四、对象的创建和使用

1.必须使用new关键字创建对象

2.使用对象(引用).成员变量或引用对象的成员变量。

3.使用对象(引用).方法(参数列表)来调用对象的方法。

4.同一个类的每个对象有不同的成员变量存储空间。

5.同一个类的每个对象共享该类的方法。

6.对象用计算机语言对问题域中事物的描述,对象通过“属性”和“方法”来分别对应事物所具有的静态属性和动态属性。

7.非静态方法是针对每个对象进行调用(即调用非静态方法是针对每个具体new出来的对象而言的)。

 

五、类和类之间的几种关系

1.关联关系:一个类的方法里面是另一个类的具体的某一个对象(即某个方法的参数是一个类的对象),例如方法“教研究生”,而参数是一个对象研究生(这是一种最弱的关系)。

2.继承关系(一般和特殊):××是一种××只要这句话能够说通,就可以考虑用继承关系来封装,例如:游泳运动员是一种运动员。

3.聚合关系(整体和部分):××是××的一部分,如果这句话能说通,他们之间的关系就是聚合关系。其中聚合关系又分为“聚集”和“组合”这两种关系。

         

  (聚集关系:关系相对分散)           (组合关系:关系紧密,密不可分)

 

六、构造方法(函数)

1.使用new+构造方法创建一个新的对象。

2.构造方法是定义在Java类中的一个用来初始化的对象的函数。

3.构造方法与类同名且没有返回值。

4.当没有指定构造方法时,编译器为类自动添加形如类名(){}的无参构造方法。

补充:当一个方法调用完成之后,栈里面为它分配的所有空间全部消失。

 

七、Java约定俗称的命名规则:

1.类名的首字母大写。

2.变量名和方法名的首字母小写。

3.运用驼峰标识(方法名和变量名等)。

 

八、方法重载(overload)

一个类中可以定义有相同的名字,但参数不同的多个方法。调用时会根据不同的参数来选择对应的方法

所谓参数不同指的是:(1)参数个数不一样

                                     (2)参数类型不一样

只要这两个方面有一个方面就行了。

注意:Java中方法重载和返回值和修饰符没有任何关系。

 

九、this关键字

1.在类的方法定义中使用this关键字代表使用该方法的对象的引用。

2.当必须指出当前使用方法的对象是谁时要使用this关键字。

3.使用this可以处理方法中成员变量和参数重名的情况。

4.this可以看作是一个变量,它的值是当前对象的引用。

5.就近声明原则:当你确定不了一个参数到底指哪一个变量时(确定不了一个变量到底指的是你声明的哪一个变量的时候)找离他最近的声明。

 

十、static关键字(可用于计数)

1.在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份。

2.用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员(静态方法不再是针对某个对象调用,所以不能访问非静态成员)

3.可以通过对象引用或类名(不需要实例化)访问静态成员。

4.静态方法可以访问静态方法,普通方法可以访问静态方法,静态方法不能访问普通方法或者属性,普通方法可以访问普通方法。普通方法是针对某个对象调用,静态方法不针对某个对象调用。

:在成员变量前加上static关键字,main方法才能访问。

 

十一、package和import语句(Eclipse和idea开发会自动生成)

1.为便于管理大型软件系统中数目众多的类,解决命名冲突问题,Java引入包(package)机制,提供类的多重类命名空间。

2.package(包)的名字约定俗成的为公司域名的倒写

3.package语句作为Java(源文件)的第一条语句,指明该文件中定义的类所在的包(若缺省该语句,则指定为无名包)

包实则就是一个文件夹,它的格式为:

package pkg1[pkg2][pkg3...]];

4.Java编译器把包对应于文件系统的目录管理,package语句中,用‘.’来指明包(目录)的层次,例如:使用语句

package com.example;

则该文件中所有的类位于.\com\example目录下

5.如果把一个类放到包(package)里面,第一句写package,package后面想跟多少层包就跟多少层包,但是有一点必须注意,你编译出来的这个class文件必须位于正确的目录(和包的层次要完全一致)下面。

6.如果你想让在另一个类里面用我们在这个包里面的类,必须把名字写全了或者导入该类所在的包,import ...

7.如果将一个类打包,则使用该类时,必须使用该类的全名(例如:com.example.MyClass),Java编译器才会找到该类,也可以使用import在文件的开头引入要使用的类,例如:

import com.example.MyClass;
import java.util.*;

MyClass myClass = new MyClass();//可以直接使用类名

注意:可以不需要用import语句直接使用java.lang包中的类,因为java已经默认为你导入该包,不需要手动导入。

8.访问位于同一个包中的类不需要引入。

9.class文件的最上层包的父目录必须位于classpath下(eclipse和idea不用担心这个问题)。

10.执行一个类需要写全包名。

 

十二、JDK中主要的包介绍

1、java.lang--包含一些Java语言的核心类,如:String、Math、Integer、System和Thread,提供常用功能,java.lang不需要引入包,其他的包必须引入。

2.java.awt--包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)

3.java.applet--包含applet运行所需的一些类。

4.java.net--包含执行的网络相关的操作的类。

5.java.io--包含能提供多种输入/输出功能的类。

6.java.util--包含一些实用的工具类,如定义系统特性、使用与日期日历相关的函数。

7.java.sql--数据库包。

 

十三、打包成jar包

在命令DOS窗口下,使用命令jar -cvf test.jar *.*即可把当前目录下的文件打包成jar包(类似于压缩包),把包好的jar可以直接给他人使用。其中,*.*表示当前目录,test.jar表示打包后的名称。

 

十四、Java权限修饰符

 

访问控制符

   类内部    同一个包子类所有类
               private          
              default                   
            protected                      
               public                         

1.Java权限修饰符public protected private置于类的成员变量前,用来限定其他对象对该类对象成员的访问权限

2.对于外部class的权限修饰符只可以用public和default修饰符,因为外部class上级目录就是包,对应的访问的权限就是public和default,而内部类四种权限修饰符都可以使用。

3.对于类修饰符而言,public类可以在项目的任何地方访问,而default类(缺省)只可以被同一个包内部的类访问,也就是常说的“包权限”,对于变量而言同理。

4.对四种权限修饰符的进一步解释(结合上年表格理解):

private:Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问。其子类不能访问,更不允许跨包访问。

default:即不加任何访问修饰符,通常称为“默认访问模式”。被其修饰的类、属性以及方法,只允许在同一包中进行访问(包访问权限)。

protected:介于public和private之间的一种访问修饰符,一般称之为“保护型”。被其修饰的类、属以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。

public:Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性和方法不仅可以跨类访问,而且允许跨包访问。

 

十五、继承

Java中使用extends关键字实现类的继承机制,其语法规则为:

<modifier> class 类名 [extends 父类]  [implements 接口]{

         ...

    }

通过继承,子类自动拥有父类的所有成员变量和方法,Java只支持单继承,不允许多继承。一个子类只能有一个父类,一个父类可以有多个子类。

1.子类比父类“大”,子类对象包含一个父类对象。

2.子类可以从父类那里继承了所有成员变量及方法,包括前面带有private修饰符的也被继承了下来,但这时子类只有访问权没有修改权,也就是只能读不能改。

3.所有修饰符都可以修饰成员变量、成员方法以及构造方法。

4.为了代码安全起见,修饰符尽量不要使用权限大的,适用即可。比如成员变量,如果没有特殊需要,尽可能用private。

5.修饰符修饰的是“被访问”的权限。

 

补充:Java面向对象基本概念-引用

1.Java语言中除基本数据类型外的变量类型都称之为引用类型。

2.基本数据类型占用一块内存,引用类型占用两块内存。

3.Java中的对象是通过引用对其操作的。

4.集成方式包括单一继承和多重集成,但是Java只支持单一继承,但是可以实现多个接口。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值