• java自学-类与对象


    1.面向对象和面向过程

    java是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。

    2.类

    类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。
    类就是面向对象,描述一类事物的属性和行为。
    比如人是一个类,属性是姓名、年龄等,行为就是上学,吃饭等。
    3.类的创建
    格式
    public class ClassName { 
    //成员变量
     //成员方法 
    }
    成员变量:对应事物的属性     成员方法:对应事物的行为
    举例
    public class People{ 
    //成员变量 
    String name;//姓名 
    int age;//年龄
    //成员方法
     //学习的方法
     publicvoid study() { 
    System.out.println("好好学习,天天向上"); 
    }
    //吃饭的方法 
    publicvoid eat() {
     System.out.println("学习饿了要吃饭"); 
    }
     }

    4.成员变量和局部变量

    变量根据定义位置的不同,我们给变量起了不同的名字。
    在类中的位置不同 
    成员变量:类中,方法外
    局部变量:方法中或者方法声明上(形式参数)
    作用范围不一样 
    成员变量:类中
    局部变量:方法中
    初始化值的不同 
    成员变量:有默认值
    局部变量:没有默认值。必须先定义,赋值,最后使用
    在内存中的位置不同 
    成员变量:堆内存
    局部变量:栈内存
    生命周期不同 
    成员变量:随着对象的创建而存在,随着对象的消失而消失
    局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
    5.封装
    java有3大特性,封装,继承,多态。这里先说一下封装。封装,顾名思义就是把东西封起来,不让别人看到。
    java封装就是一个类把自己的成员变量用private修饰,不让别的地方访问,只有自己可以调用。private是一个权限修饰符,代表最小权限,可以修饰成员变量和成员方法,被private修饰后的成员变量和成员方法,只在本类中才能访问。
    若需要访问某个属性,提供公共方法对其访问。对需要访问的成员变量,提供对应的一对 getXxx 方法 、 setXxx 方法。
    例子
    public class People { 
    private String name;
     private int age; 
    public void setName(String n) {
    this.name = n;
     }
    public String getName() { 
    return name; 
    }
    public void setAge(int a) { 
    this.age = a; 
    }
    public int getAge() {
     return age;
     } 
    }

    6.构造方法

     构造方法用来初始化该对象,给对象的成员变量赋初始值。比如我们创建对象时的new People(),调用的就是类的构造方法,每个类都有一个默认的无参构造方法,我们也可以自定义有参构造方法,给类成员变量赋值。
    修饰符 构造方法名(参数列表){ 
    // 方法体 
    }

    例子:

    public class People{ 
    private String name;
     private int age; // 无参数构造方法
     public People() {
    } 
    // 有参数构造方法 
    public Student(String name,int age) { 
    this.name = name;
     this.age = age; 
    } 
    }
    注意事项
    1.如果你不提供构造方法,系统会给出无参数构造方法。
    2.如果你提供了构造方法,系统将不再提供无参数构造方法。
    3.构造方法是可以重载的,既可以定义参数,也可以不定义参数。
     
    对象
    对象:是一类事物的具体体现。对象是类的一个实例(比如new出来一个对象),必然具备该类事物的属性和行为。
    对象是类的具体实例,比如描述人的一个类时People,对象就可以是People p = new People();p就是一个具体的对象,可以通过p操作属性和行为。
    类是对一类事物的描述,是抽象的。
    对象是一类事物的实例,是具体的。
    类是对象的模板,对象是类的实体。

    对象创建及使用

    使用new创建一个新对象,用对象调用属性和方法,例子:

    public class TestPeople { 
    public static void main(String[] args) { 
    //创建对象格式:类名 对象名 = new 类名(); 
    People p= new People();
     System.out.println("p:"+p);
    //直接输出成员变量值 
    System.out.println("姓名:"+p.name); //null 
    System.out.println("年龄:"+p.age); //0 
    System.out.println("‐‐‐‐‐‐‐‐‐‐");
     //给成员变量赋值 
    p.name = "赵丽颖"; 
    p.age = 18; 
    //再次输出成员变量的值 
    System.out.println("姓名:"+p.name); //赵丽颖 
    System.out.println("年龄:"+p.age); //18 
    System.out.println("‐‐‐‐‐‐‐‐‐‐"); //调用成员方法 
    p.study(); // "好好学习,天天向上" 
    p.eat(); // "学习饿了要吃饭" 
    }
    }
     
    内部类
    将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。
    在描述事物时,若一个事物内部还包含其他事物,就可以使用内部类这种结构。比如,汽车类 Car 中包含发动机类 Engine ,这时, Engine 就可以使用内部类来描述,定义在成员位置。

    格式:

    class 外部类 { 
    class 内部类{
     } 
    }
    内部类可以直接访问外部类的成员,包括私有成员。
    外部类要访问内部类的成员,必须要建立内部类的对象
    举例:
    public class Person { //外部类
    private boolean live = true; 
    class Heart { //内部类
    public void jump() { 
    // 直接访问外部类成员 
    if (live) { 
    System.out.println("心脏在跳动"); 
    } else { 
    System.out.println("心脏不跳了"); 
    } 
    } 
    }
    public boolean isLive() { 
    return live; 
    }
    public void setLive(boolean live) { 
    this.live = live; 
    } 
    }

    //测试类
    public class InnerDemo {
    public static void main(String[] args) {
    // 创建外部类对象
    Person p = new Person();
    // 创建内部类对象
    Heart heart = p.new Heart();
    // 调用内部类方法
    heart.jump();
    // 调用外部类方法
    p.setLive(false);
    // 调用内部类方法
    heart.jump();
    }
    }
    输出结果:
    心脏在跳动
    心脏不跳了
  • 相关阅读:
    GO語言基礎教程:數組,切片,map
    GO語言視頻教程下載
    GO語言基礎教程:流程控制
    GO語言基礎教程:數據類型,變量,常量
    GO語言基礎教程:Hello world!
    GO語言基礎教程:序章
    騰訊RTX的API開發,給RTX開個天窗
    RTX的api開發實例
    [轉]redis;mongodb;memcache三者的性能比較
    [轉載]史上最强php生成pdf文件,html转pdf文件方法
  • 原文地址:https://www.cnblogs.com/zxxfz/p/12011413.html
Copyright © 2020-2023  润新知