• Java 学习 day05


    01-面向对象(概述)

    面向对象 -- 冰箱.打开;冰箱.存储;冰箱.关闭;

    02-面向对象(举例)

    使用和指挥 -- 对象,不需要关注过程,只关注结果;

    一切皆对象,万物皆对象  -- 自《Thinking in java》

    03-面向对象(类与对象的关系).avi

    /*
    人开门:名词提炼法。
    人
    {
        开门(门)
        {
            门.开();
        }
    }
    
    门
    {
        开(){操作门轴等。}
    }
     */
    View Code
    package myFirstCode;
    
    //面向对象:三个特征,封装、继承、多态
    //以后开发:其实就是找对象使用。没有对象,就创建一个对象。
    //找对象,建立对象,使用对象,维护对象的关系。
    
    /*
    * 类和对象的关系。
    * 
    * 现实生活中的对象“:张三、李四。
    * 想要描述:提取对象中共性内容。对具体的抽象
    * 类就是:对现实生活中事务的描述。
    * 对象:就是这类事物,实实在在的实体。
    */
    
    //需求:描述汽车(颜色,轮胎数)。描述事物其实就是在描述事物的属性和行为。
    //属性对应是类中变量,行为对应的类中的函数(方法)。
    //其实定义类,就是在描述事物,就是在定义属性和行为。属性和行为共同成为类中的成员(成员变量和成员方法)。
    
    class Car
    {
        //描述颜色
        String color = "红色";
        //描述轮胎数
        int num = 4;
        
        //运行行为。
        void run()
        {
            System.out.println(color+".."+num);
        }
    }
    
    public class CarDemo
    {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //生产汽车。在java中通过new操作符来完成。
            //其实就是在堆内存产生一个实体。
            Car c = new Car();
            
            //需求:将已有车的颜色改为蓝色。指挥该对象做使用。在java指挥方式是:对象.对象成员
            c.color = "blue";
            c.run();
            
            Car c1 = new Car();
            c1.run();
        }
    }
    View Code

    04-面向对象(成员变量和局部变量).avi

    /*
     * 成员变量和局部变量。
     * 作用范围:
     * 成员变量作用于整个类中。
     * 局部变量作用于函数中,或者语句中。
     * 在内存中的位置:
     * 成员变量:存在堆内存中,因为对象的存在,才在内存中存在。
     * 局部变量:存在栈内存中。
     */
    View Code

    05-面向对象(匿名对象的应用).avi

            new Car().num = 5;
            new Car().color = "blue";
            new Car().run();
            Car c = new Car();
            c.run();
            c.num = 4;
            new Car().run();
            //匿名对象使用方式一:当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化。
            //如果对一个对象进行多个成员调用,必须给这个对象起个名字。
            //匿名对象使用方式二:可以将匿名对象作为实际参数进行传递。
    View Code

    强引用、弱引用、软引用、虚引用

    06-面向对象(封装概述).avi

    封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

    07-面向对象(封装private).avi

    把属性都隐藏,提供公共方法对其访问。

     1 package myFirstCode;
     2 
     3 /*
     4  * private:私有,权限修饰符:用于修饰类中的成员(成员变量,成员函数)。
     5  * 私有只在本类中有效。
     6  * 
     7  * 将age私有化以后,类以外即使建立了对象也不能直接访问。
     8  * 但是人应该有年龄,就需要在person类中提供对应访问age的方式。
     9  * 
    10  * 注意:私有仅仅是封装的一种表现形式。
    11  * 
    12  * 之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句。
    13  * 对访问的数据进行操作。提高代码健壮性。
    14  */
    15 
    16 class Person
    17 {
    18     private int age;
    19     public void setAge(int a)
    20     {
    21         if(a>0 && a<130)
    22         {
    23             age = a;
    24             speak();
    25         }
    26         else
    27             System.out.println("false age");
    28     }
    29     
    30     public int getAge()
    31     {
    32         return age;
    33     }
    34     
    35     
    36     void speak()
    37     {
    38         System.out.println("age = "+age);
    39     }
    40 }
    41 
    42 
    43 public class personDemo {
    44 
    45     public static void main(String[] args) {
    46         // TODO Auto-generated method stub
    47         Person p = new Person();
    48         p.setAge(25);
    49     }
    50 
    51 }
    View Code

    08-面向对象(构造函数).avi

    特点:

    1. 函数名与类名相同

    2. 不用定义返回值类型

    3. 不可以写return语句

    作用:

    给对象进行初始化。

    注意:

    1. 默认构造函数的特点。

    2. 多个构造函数是以重载的形式存在的。

     1 package myFirstCode;
     2 
     3 /*
     4 对象一建立就会调用与之对应的构造函数。
     5 构造函数的作用:可以用于给对象进行初始化。
     6 
     7 构造函数的小细节:
     8 当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。
     9 
    10 当在类中自定义了构造函数后,默认的构造函数就没有了。
    11 
    12 构造函数和一般函数在写法上有不同。
    13 在运行上也有不同。
    14 
    15 构造函数是在对象一建立就运行。给对象初始化。
    16 而一般方法是对象调动才执行,是给对象添加对象具备的功能
    17 
    18 一个对象建立,构造函数只运行一次。
    19 而一般方法可以被调用多次。
    20 
    21 什么时候定义构造函数呢?
    22 当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。
    23 */
    24 
    25 class Person
    26 {
    27     private String name;
    28     private int age;
    29      Person()
    30      {
    31          System.out.println("A: name="+name+",age = "+age);
    32          cry();
    33      }
    34      
    35      Person(String n)
    36      {
    37          name = n;
    38          System.out.println("B: name="+name+",age = "+age);
    39          cry();
    40      }
    41      Person(String n,int a)
    42      {
    43          name = n;
    44          age = a;
    45          System.out.println("C: name="+name+",age = "+age);
    46          cry();
    47      }
    48      
    49      public void setName(String n)
    50      {
    51          name = n;
    52          
    53      }
    54      public String getName()
    55      {
    56          return name;
    57      }
    58      
    59 
    60      
    61      public void cry()
    62      {
    63          System.out.println("cry......");
    64      }
    65 }
    66 
    67 public class personDemo2 {
    68 
    69     public static void main(String[] args) {
    70         // TODO Auto-generated method stub
    71         Person p1 = new Person();
    72         p1.getName();
    73         Person p2 = new Person("lisi");
    74         p2.setName("wangwu");
    75         System.out.println(p2.getName());
    76         Person p3 = new Person("zhangsan",25);
    77         p3.setName("zhaosi");
    78     }
    79 
    80 }
    View Code

    09-面向对象(构造代码块).avi

     1 package myFirstCode;
     2 
     3 /*
     4 对象一建立就会调用与之对应的构造函数。
     5 构造函数的作用:可以用于给对象进行初始化。
     6 
     7 构造函数的小细节:
     8 当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。
     9 
    10 当在类中自定义了构造函数后,默认的构造函数就没有了。
    11 
    12 构造函数和一般函数在写法上有不同。
    13 在运行上也有不同。
    14 
    15 构造函数是在对象一建立就运行。给对象初始化。
    16 而一般方法是对象调动才执行,是给对象添加对象具备的功能
    17 
    18 一个对象建立,构造函数只运行一次。
    19 而一般方法可以被调用多次。
    20 
    21 什么时候定义构造函数呢?
    22 当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。
    23 */
    24 
    25 class Person
    26 {
    27     private String name;
    28     private int age;
    29     
    30 /*
    31     构造代码块
    32     作用:给对象进行初始化。
    33     对象一建立就运行,而且优先于构造函数执行。
    34     和构造函数的区别:
    35     构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象进行初始化
    36     
    37     构造代码块中定义的是不同对象共性的初始化内容。
    38  */
    39     {
    40         System.out.println("person code run");
    41         cry()
    42     }
    43     
    44      Person()
    45      {
    46          System.out.println("A: name="+name+",age = "+age);
    47          cry();
    48      }
    49      
    50      Person(String n)
    51      {
    52          name = n;
    53          System.out.println("B: name="+name+",age = "+age);
    54          cry();
    55      }
    56      Person(String n,int a)
    57      {
    58          name = n;
    59          age = a;
    60          System.out.println("C: name="+name+",age = "+age);
    61          cry();
    62      }
    63      
    64      public void setName(String n)
    65      {
    66          name = n;
    67          
    68      }
    69      public String getName()
    70      {
    71          return name;
    72      }
    73      
    74 
    75      
    76      public void cry()
    77      {
    78          System.out.println("cry......");
    79      }
    80 }
    81 
    82 public class personDemo2 {
    83 
    84     public static void main(String[] args) {
    85         // TODO Auto-generated method stub
    86         Person p1 = new Person();
    87         p1.getName();
    88         Person p2 = new Person("lisi");
    89         p2.setName("wangwu");
    90         System.out.println(p2.getName());
    91         Person p3 = new Person("zhangsan",25);
    92         p3.setName("zhaosi");
    93     }
    94 
    95 }
    View Code

    10-面向对象(this关键字).avi

     1 package myFirstCode;
     2 
     3 /*
     4 this:看上去,是用于区分局部变量和成员变量同名情况。
     5 this为什么可以解决这个问题?
     6 this到底代表的是什么呢?
     7 
     8 this:就代表本类的对象,到底代表哪一个呢?
     9 this代表它所在函数所属对象的引用。
    10 简单说,哪个对象在调用this所在的函数,this就代表哪个对象。
    11 */
    12 
    13 class Person
    14 {
    15     private String name;
    16     private int age;
    17     Person(String name)
    18     {
    19         this.name = name;
    20     }
    21     Person(String n,int a)
    22     {
    23         name = n;
    24         age = a;
    25     }
    26     
    27     public void speak()
    28     {
    29         System.out.println("name = "+this.name+'
    '+"age = "+this.age);
    30     }
    31      public void show()
    32      {
    33          System.out.println(this.name);
    34      }
    35 }
    36 
    37 
    38 public class personDemo3 {
    39 
    40     public static void main(String[] args) {
    41         // TODO Auto-generated method stub
    42         Person p = new Person("lisi");
    43         p.speak();
    44 
    45     }
    46 
    47 }
    View Code

    11-面向对象(this关键字的应用).avi

     1 package myFirstCode;
     2 
     3 /*
     4 this:看上去,是用于区分局部变量和成员变量同名情况。
     5 this为什么可以解决这个问题?
     6 this到底代表的是什么呢?
     7 
     8 this:就代表本类的对象,到底代表哪一个呢?
     9 this代表它所在函数所属对象的引用。
    10 简单说,哪个对象在调用this所在的函数,this就代表哪个对象。
    11 
    12 
    13 this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。
    14 但凡本类功能内部使用了本类对象,都用this表示。
    15 */
    16 
    17 class Person
    18 {
    19     private String name;
    20     private int age;
    21     Person(int age)
    22     {
    23         this.age = age;
    24     }
    25     Person(String n,int a)
    26     {
    27         name = n;
    28         age = a;
    29     }
    30     
    31     public void speak()
    32     {
    33         System.out.println("name = "+this.name+'
    '+"age = "+this.age);
    34     }
    35      public void show()
    36      {
    37          System.out.println(this.name);
    38      }
    39      /*
    40       * 需求:给人定义一个用于比较年龄是否相同的功能。也就是是否是同龄人。
    41       */
    42      public boolean compare(Person p)
    43      {
    44          return this.age == p.age;
    45      }
    46 }
    47 
    48 
    49 
    50 
    51 public class personDemo3 {
    52 
    53     public static void main(String[] args) {
    54         // TODO Auto-generated method stub
    55 //        Person p = new Person("lisi");
    56 //        p.speak();
    57         Person p1 = new Person(20);
    58         Person p2 = new Person(25);
    59         boolean b = p1.compare(p2);
    60         System.out.println(b);
    61 
    62     }
    63 
    64 }
    View Code

    12-面向对象(this关键字在构造函数间调用).avi

     1 package myFirstCode;
     2 /*
     3 this语句:用于构造函数之间进行互相调用。
     4 this语句只能定义在构造函数的第一行。因为初始化要先执行。
     5 */
     6 
     7 class Person
     8 {
     9     private String name;
    10     private int age;
    11     Person()
    12     {
    13         //this("haha")
    14     }
    15     Person(String name)
    16     {
    17         this.name  = name;
    18     }
    19     Person(String name,int age)
    20     {
    21         this.age = age;
    22     }
    23 }
    24 
    25 public class personDemo4 {
    26 
    27     public static void main(String[] args) {
    28         // TODO Auto-generated method stub
    29         Person p = new Person("lisi",30);
    30     }
    31 
    32 }
    View Code
  • 相关阅读:
    未来的计划和考虑
    jquery 常用的方法
    对于页面动态加载的元素事件无效的解决方案
    Myeclipse8.5中svn插件安装方法总结
    JS读RSS
    JAVA的RSS处理
    环境:win7+ie8 IE8的F12不起作用,原因如下:
    关闭和释放JDBC
    关于Eclipse无法生成class文件的问题
    JavaScript跨域总结与解决办法
  • 原文地址:https://www.cnblogs.com/SH-xuliang/p/6905922.html
Copyright © 2020-2023  润新知