搜索
首页Javajava教程Java入门之面对对象的学习

Java入门之面对对象的学习

Jun 28, 2017 am 09:56 AM
java入门对象

 
关键词:面对对象、类、、构造方法、this、static、内部类
 
一、面对对象的概念:把解决的问题安装一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。其特点可概括为封装性、继承性、多态性。
    1、封装性:面对对象的核心,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。
    2、继承性:主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展。
    3、多态性:是在程序中允许出现重名现象,它指在一个类中定义的属性和方法被其他类继承后,他们可以具有不同的数据类型或表现出不同的行为,这使得同一个属性和方法在不同的类中具有不同的语义。
二、类与对象
     1、类是对象的抽象,它用于描述一组对象的共同特征和行为。类中可以定义成员变量和成员方法,其中成员变量用于描述对象的特征,也称作属性,成员方法用于描述对象的行为,可简称方法。
         如何创建类:
1 class Person{
2      //定义int 类型的变量
3       int age;
4      //定义speak()方法
5       void speak (){
6             System.out.println(“***”)
7       }
8 } //Person 类名,age 是成员变量,speak()成员方法
2、对象的创建与使用:
     创建:类名 对象名= new 类名();//实例对象
     使用: 对象引用.对象成员;
     实例化对象时,Java虚拟机会自动为成员变量进行初始化,针对不同类型的成员变量,赋予不同的初始值。
表:成员变量的初始值
成员变量类 初始值 成员变量类 初始值
    byte   0 double 0.0D
short 0 char 空字符,‘\u0000'
int 0 boolean false
long  0L 引用数据类型 null
float 0.0F    
在Java中,null是一种特殊的常量,当一个变量的值为null时,则表示该变量不指向任何一个对象,变成垃圾被回收。 
 
3、所谓的类的封装是指定义一个类时,将类中的属性私有化,即利用private 关键字来修饰,私有属性只能在它所在类中被访问。为了能让外界访问私有属性,需要提供一些使用public 修饰的公用方法,其中包括用于获得属性值得getXXX()方法和设置属性值得setXXX()方法。
 
 1 class Student{
 2     private String name;    //将name属性私有化
 3     private int age;        //将age属性私有化
 4     //下面是公有的getXXX()和setXXX()方法
 5     public String getName (){
 6         return name;
 7     }
 8     public void setName(String stuName){
 9         name = stuName ;
10     }
11     public int getAge (){
12         return age ;
13     }
14     public void setAge(int stuAge){
15         //下面是对传入的参数进行检查
16         if(stuAge<=0){
17             System.out.println("年龄不合法");
18         }else {
19             age = stuAge ;        //对属性赋值
20         }
21     }
22     public void introduce(){
23         System.out.println("大家好,我叫"+name+",我今年"+age+"岁!");
24     }
25 }
26 public class Example01{
27     public static void main(String[] args){
28         Student stu  = new Student();
29         stu.setAge(-30);
30         stu.setName("李芳");
31         stu.introduce();
32     }
33 }
 
三、构造方法
1、构造方法:构造方法是类中一个特殊成员,它会在实例化对象时被自动调用。
2、构造方法的特点:
 ①方法名与类名相同;

 ②在方法名前面没有返回值类型的声明;

 ③在方法中不能使用return语句返回一个值;

 1 class Person{
 2       //构造方法
 3      public Person(){
 4           //无参构造方法
 5       }
 6      public Person(int age){
 7           age = a;   //有参构造方法
 8      }
 9      public void speak(){
10           System.out.println(“I am” +age+”years old !");
11      }
12 }
13 public  class Example{
14      public  static void main (String [] args){
15          Person p = new Person(20);  //实例化Person对象
16          p.speak();
17      }
18 }

 

3、构造方法的重载:与普通方法一样,方法名相同,只需要参数类型或参数个数不同即可。
     一般情况下,构造方法通常会使用public来修饰。
 
 
四、this 关键字
1、this关键字三种常用方法:

①通过this关键字可以明确地访问一个类的成员变量,解决与局部变量名称冲突问题。

 1 class Person{
 2      int age ;
 3      public Person(int age){
 4           this.age = age ;   //访问成员变量
 5      }
 6      public int getAge(){
 7          return this .age;
 8     }
 9  }

②通过this关键字调用成员方法。

③构造方法是在实例化对象时被Java虚拟机自动调用的,在程序中不能像调用其他方法一样去调用构造方法,但可以在一个构造方法中使用“this(【参数1,参数2……】)”的形式来调用其他的构造方法。

注意点:

①只能在构造方法中使用this 调用其他的构造方法,不能在成员方法中使用。

②在构造方法中,使用this 调用构造方法的语句必须位于第一行,且只能出现一次。

③不能在一个类的两个构造方法中使用this互相调用。

 
五、static关键字
1、使用static关键字来修饰成员变量,该变量被作静态变量。静态变量被所有实例共享,可以使用“类名.变量”的形式来访问。
    注意:static关键字只能用于修饰成员变量,不能用于修饰局部变量。
2、静态方法:在类中定义的方法前加上static关键字,可在不创建对象的情况下调用某方法。可使用“类名.方法名”的形式访问。
     注意:在一个静态方法中只能访问static修饰的成员,静态方法在被调用时可以创建任何对象。
3、静态代码块:用static关键字修饰的代码块称为静态代码块,当类被加载时,静态代码块会被执行,由于类只加载异常,因此静态代码块只能执行一次。
 
4、单例模式:
 1 class Single{
 2      private static Single INSTANCE = new Single();
 3      private Single(){}
 4      public static Single getInstance(){  
 5          return INSTANCE ; 
 6        }
 7 }
 8 //上面单例又可写成以下形式
 9 class Single{
10      private Single(){}
11      public static final Single INSTANCE = new Single();
       /*变量名INSTANCE的前面有三个修饰符,其中,public的作用是允许外部直接访问该变量,static 的作用是 让外部可以使用
         “类名.变量名“的方式来访问变量,final的作用是禁止外部对该变量进行修改。*/
12 }
13 
14 class Example {
15     public static void main(String[] args){
16          Single s = Single.getInstance();    //   getInstance()方法是获得Single类实例对象的唯一途径,Single 类是一个单例的类    
17      }
18 }
被关键字final修饰的变量为常量,其值不可变。
 
六、内部类:根据内部类的位置、修饰符和定义的方式可分为成员内部类、静态内部类、方法内部类。
1、创建内部类对象的具体语法格式:
    外部类名.内部类名 变量名 = new 外部类名().new 内部类();
 1 class Outer{
 2     private int num = 4;              //定义类的成员变量
 3     //下面的代码定义了一个成员方法,方法中访问内部类
 4     public void test(){
 5         Inner inner = new Inner();
 6         inner.show();
 7     }
 8     //下面的代码定义了一个成员内部类
 9     class Inner{
10         void show(){
11             //在成员内部类的方法中访问外部类的成员变量
12             System.out.println("num = "+num);
13         }
14     }
15 }
16 public class Example16 {
17     public static void main(String[] args){
18         Outer outer = new Outer();               //创建外部类对象
19         outer.test();                                 //调用test()方法
20     }
21 }
22 //直接创建内部类对象示例
23 public class Example16 {
24     public static void main(String[] args){
25         Outer.Inner inner = new Outer().Inner() ;               //创建内部类对象
26         inner.show();                                 //调用show()方法
27     }
28 }
29 //当内部类被声明为私有,外界将无法访问。
2、创建静态内部类对象的具体语法格式:
     外部类名.内部类名 变量名 = new 外部类名.内部类名();
 1 class Outer{
 2     private static int num = 6;              //定义类的成员变量
 3     //下面的代码定义了一个静态内部类
 4     static class Inner{
 5         void show(){
 6             System.out.println("num = "+num);
 7         }
 8     }
 9 }
10 public class Example16 {
11     public static void main(String[] args){
12         Out.Inner inner = new Out.Inner();             //创建内部类对象
13             inner.show();                                 //调用内部类的方法
14     }
15 }

     注意:①在静态内部类中只能访问外部类的静态成员。

              ②在静态内部类中可以定义静态成员,而在非静态的内部类中不允许定义静态的成员。
 
3、方法内部类:是指在成员方法中定义的类,它只能在当前方法中被使用。方法内部类可以访问外部类的成员变量。

以上是Java入门之面对对象的学习的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
JVM如何处理操作系统API的差异?JVM如何处理操作系统API的差异?Apr 27, 2025 am 12:18 AM

JVM通过JavaNativeInterface(JNI)和Java标准库处理操作系统API差异:1.JNI允许Java代码调用本地代码,直接与操作系统API交互。2.Java标准库提供统一API,内部映射到不同操作系统API,确保代码跨平台运行。

Java 9影响平台独立性中引入的模块化如何?Java 9影响平台独立性中引入的模块化如何?Apr 27, 2025 am 12:15 AM

modularitydoesnotdirectlyaffectJava'splatformindependence.Java'splatformindependenceismaintainedbytheJVM,butmodularityinfluencesapplicationstructureandmanagement,indirectlyimpactingplatformindependence.1)Deploymentanddistributionbecomemoreefficientwi

什么是字节码,它与Java的平台独立性有何关系?什么是字节码,它与Java的平台独立性有何关系?Apr 27, 2025 am 12:06 AM

BytecodeinJavaistheintermediaterepresentationthatenablesplatformindependence.1)Javacodeiscompiledintobytecodestoredin.classfiles.2)TheJVMinterpretsorcompilesthisbytecodeintomachinecodeatruntime,allowingthesamebytecodetorunonanydevicewithaJVM,thusfulf

为什么Java被认为是一种独立于平台的语言?为什么Java被认为是一种独立于平台的语言?Apr 27, 2025 am 12:03 AM

javaachievesplatformIndependencEthroughThoJavavIrtualMachine(JVM),wodecutesbytecodeonyanydenanydevicewithajvm.1)javacodeiscompiledintobytecode.2)

图形用户界面(GUIS)如何提出Java平台独立性的挑战?图形用户界面(GUIS)如何提出Java平台独立性的挑战?Apr 27, 2025 am 12:02 AM

JavaGUI开发中的平台独立性面临挑战,但可以通过使用Swing、JavaFX,统一外观,性能优化,第三方库和跨平台测试来应对。JavaGUI开发依赖于AWT和Swing,Swing旨在提供跨平台一致性,但实际效果因操作系统不同而异。解决方案包括:1)使用Swing和JavaFX作为GUI工具包;2)通过UIManager.setLookAndFeel()统一外观;3)优化性能以适应不同平台;4)使用如ApachePivot或SWT的第三方库;5)进行跨平台测试以确保一致性。

Java开发的哪些方面取决于平台?Java开发的哪些方面取决于平台?Apr 26, 2025 am 12:19 AM

JavadevelovermentIrelyPlatForm-DeTueTososeVeralFactors.1)JVMVariationsAffectPerformanceNandBehaviorAcroSsdifferentos.2)Nativelibrariesviajnijniiniininiinniinindrododerplatefform.3)

在不同平台上运行Java代码时是否存在性能差异?为什么?在不同平台上运行Java代码时是否存在性能差异?为什么?Apr 26, 2025 am 12:15 AM

Java代码在不同平台上运行时会有性能差异。1)JVM的实现和优化策略不同,如OracleJDK和OpenJDK。2)操作系统的特性,如内存管理和线程调度,也会影响性能。3)可以通过选择合适的JVM、调整JVM参数和代码优化来提升性能。

Java平台独立性有什么局限性?Java平台独立性有什么局限性?Apr 26, 2025 am 12:10 AM

Java'splatFormentenceHaslimitations不包括PerformanceOverhead,versionCompatibilityIsissues,挑战WithnativelibraryIntegration,Platform-SpecificFeatures,andjvminstallation/jvminstallation/jvmintenance/jeartenance.therefactorscomplicatorscomplicatethe“ writeOnce”

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),