java学习笔记day5

来源:互联网 发布:淘宝怎么登陆不上去 编辑:程序博客网 时间:2024/05/22 00:09
面向过程:强调的是功能行为
面向对象:将功能封装进对象,强调具备了功能的对象。
面向过程:
打开冰箱
存储进冰箱
关闭冰箱
面向对象:
冰箱.打开
冰箱.存储
冰箱.关闭
面向对象:3个特征:封装、继承、多态。
找对象,建立对象,使用对象。维护对象的关系。
类:描述。
对象:实体。
成员变量和局部变量:
 作用范围:
  成员变量作用于整个类中。
  局部变量作用与函数中,或者语句中。
 在内存中的位置:
  成员变量:在堆内存中,因为对象的存在,才在内存中存在。
  局部变量:存在栈内存中。
class Car
{
    String color = "red";
    int num = 4;
    void run() 
    {
        System.out.println("color+".."+num);
    }
}
class CarDemo
{
    public static void main(String[] args)
    {
        Car c = new Car();
        c.num = 5;
        Car c1 = c;
        c1.color = "green";
        c.run();
        new Car().run();
        //匿名对象使用方式之一:当对象的方法只调用一次时。
    }
}
封装(Encapsulation)
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:将变化隔离,便于使用,提高重用性,提高安全性。
封装原则:
  将不需要对外提供的内容都隐藏起来。
  把属性都隐藏,提供公共方法对其访问。
具体的封装行为:
/*
private:私有,权限修饰符:用于修饰类中的成员(成员变量,成员函数)。
私有只在本类中有效。


将age私有化以后,类以外即使建立了对象也不能直接访问。
但是人应该有年龄,就需要在Person中提供对应访问age的方式。


注意:私有仅仅是封装的一种形式。


*/
class Person
{
    private int age;
    public void setAge(int a)
    {
        if(a > 0 && a < 130)
            age = a;
        else
            System.out.println("illegal age");
    }
    public void getAge()
    {
        return age;
    }
    void speak()
    {
        System.out.println("age="+age);
    }
}
class PersonDemo
{
    public static void main(String[] args)
    {
        Person p = new Person();
        //p.age = -20;
        p.setAge(20);
        p.speak();
    }
}
构造函数
 特点:
  1.函数名与类名此昂同
  2.不用定义返回值类型
  3.不可以写return语句
作用:
 给对象进行初始化。
注意:
 1.默认构造函数的特点。
 2.多个构造函数是以重载的形式存在的。
/*
对象一简历就会调用与之对应的构造函数。
构造函数的作用:可以用于给对象初始化。
构造函数的小细节:
当一个类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数。
构造函数在对象建立时执行且只执行一次。
*/
class Person
{
    private String name;
    private int age;
    /*
    构造代码块。
    作用:给对象进行初始化。
    对象一建立就运行,而且优先于构造函数运行。
    和构造函数的区别:
    构造代码块是给所有对象进行统一初始化。
    而构造函数是给对应的对象初始化。
    */
    {
        System.out.println("person code run");
    }
    Person() {
        System.out.println("A:name="+name+",age="+age);
    }
    Person(String n) {
        name = n;
        System.out.println("B:name="+name+",age="+age);
    }
    Person(String n,int a) {
        name = n; age = a;
        System.out.println("C:name="+name+",age="+age);
    }
    public boolean compare(Person p)
    {
        return this.age == p.age;
    }
}
class PersonDemo2
{
    public static void main(String[] args)
    {
        Person p1 = new Person();
        Person p2 = new Person("lasolmi");
        Person p3 = new Person("lasolmi",20);
    }
}
this关键字
Person (String name)
{
    this.name = name;
}
/*
this:看上去,适用于区分局部变量和成员变量同名情况。
this代表它所在函数所属和对象的应用。
*/
...
    Person(String name)
    {
        this.name = name;
    }
    Person(String name,int age)
    {
        this(name);
        this.age = age;
    }
...

0 0
原创粉丝点击