Java学习笔记(2)第六节--面向对象思想

1.面向对象三大特征:

        封装,继承,多态

2.类和对象。

        类是对一类事物的描述,是抽象的。

        对象是类的具体的实例。

3.类的组成:

        1.属性        2.行为

        属性决定了类里面有什么,行为描述了这个类能做什么。

例子:定义一个学生类,用来模拟学生。

/*

        学生(属性,行为)

                1.属性:

                        姓名,年龄

                2.行为:

                        吃饭,学习,睡觉

*/


对应Java类:

    成员变量(属性)

                String name;    //姓名

                int age;            //年龄

    成员方法(行为)

                public void eat();            //吃饭

                public void sleep();        //睡觉

                public void study();        //学习

TIP:

        1.成员变量是直接定义在类中的,在方法外边。

        2.成员方法不要写static关键字。


代码示例:

public class DemoStudent {

    Stringname;

    int age;

    public  void eat(){

    System.out.println("现在我在吃饭");

    }

    public  void sleep(){

        System.out.println("现在我在睡觉");

    }

    public  void study(){

        System.out.println("现在我在学习");

    }

    public void eat(String food){

        System.out.println("我在吃"+food);

    }

}


4.引用类:

一般来说,类不能直接使用,需要根据类创建一个对象才能使用。

        1.导包:import    包名称.类名称(如果处于同个包下的文件,那么可以省略这个步骤)

        2.创建:

                类名称    对象名 = new    类名称();

                Student stu = new Student();

        3.使用:分两种情况:

                1.使用成员变量:    对象名.成员变量名

                1.使用成员方法:    对象名.成员方法名(参数)

处于同个包

代码示例

public class Student {

public static void main(String[] args) {

DemoStudent student =new DemoStudent();

        student.name="胡歌";

        student.age =18;

        System.out.println("学生姓名:"+student.name+"\n学生年龄:"+student.age);

        student.eat();

        student.eat("青菜");

        student.sleep();

        student.study();

    }

}

运行结果

TIP:

        1.程序执行时调用方法进栈,方法执行完立刻从栈中退出。

        2.一旦main方法结束,main方法也会退出内存,整个程序都没有了

        3.两个对象指向同一个对象空间,对象名只是一个引用,

        4.把方法作为一个参数传递进去,实际上传递进去的就是地址值。



5.方法作为返回值:

        1.要返回类型接收,方法必须是静态的。(加static修饰符)

代码示例:

public class DemoReturnMethod {

    public static void main(String[] args) {

        DemoStudent studenttest =returnStudent();

        System.out.println("学生姓名:"+studenttest.name+"\n学生年龄:"+studenttest.age);

        studenttest.eat();

        studenttest.eat("鸡腿");

        studenttest.sleep();

        studenttest.study();

    }

public static DemoStudentreturnStudent(){

        DemoStudent returnstudent =new DemoStudent();

        returnstudent.name="李逍遥";

        returnstudent.age =20;

        return returnstudent;

    }

}


运行结果



6.局部变量和成员变量的差别

        1.定义的位置不一样

                局部变量:方法的内部

                成员变量:在方法的外部,直接写在类当中

        2.作用范围不一样

                局部变量:只有方法当中可以调用,出了方法就不行

                成员变量:整个类都可以通用

        3.默认值不一样

                局部变量:没有默认值,如果要使用,必须手动赋值

                成员变量:如果没有赋值,会有默认值,跟数组默认值一样。

                (tip:参数在方法调用的时候必然会赋值)

        4.内存位置不一样

                局部变量:位于栈内存

                 成员变量:位于堆内存

        5.生命周期不一样

                局部变量:随着方法进栈而诞生,方法出栈而结束

                成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失                   



7.封装:

        含义:将一些细节信息隐藏起来,对外界不可见。

        类型:1.方法    2.private 

private 代码示例:

Person类

package demoprivate;

public class Person {

    Stringname;

    private int age;

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        if(age>0&&age<150) {

                this.age = age;

        }

        else

        {

                System.out.println("数据不合理!");

        }

}

测试主函数:

package demoprivate;

public class DemoPrivate {

public static void main(String[] args) {

        Person person =new Person();

        person.name ="坂田银时";

        person.setAge(28);

        person.print();

    }

}

运行结果

TIP:

        1.间接访问就是定义一个 Getter 和 Setter 方法

                对于Getter来说,不能有参数,返回值类型和成员变量对应,

                对于Setter来说,不能有返回值,参数类型和成员变量对应。

        2.布尔类型的返回函数,不是Getter,而是isGetter()。


8.this关键字

当方法的局部变量和成员变量重名的时候,会优先“就近原则”,优先使用局部变量

使用    this    来区分。

通过谁调用的方法,谁就是this


9.构造方法

        1.含义:专门用来创建对象的方法。跟new一样

        2.格式:

                public 类名称(参数类型    参数名称){

                        方法体;

                }

        3.注意事项:

                1.构造方法的名称必须和所在类的类名称完全一样,大小写也一样。

                2.构造方法不要写返回值类型,连void都不写。    

                3.构造方法不能return一个具体的返回值。

                4.如果没有编写构造方法,那么编译器会自动默认创建

                5.一旦编写了构造方法,那么将自动重载原本默认的构造方法

                6.重载:方法名称相同,方法参数列表不同。



10.标准类:

标准类也叫Java Bean

        格式:

                1.所有的成员变量都要使用pravite关键字进行私有化修饰

                2.为每一个成员变量编写Setter/Getter方法

                3.编写一个无参数的构造方法

                4.编写一个全参数的构造方法

代码示例:

标准Student类:

package demobiaozhunlei;

public class Student {

    private  Stringname;

    private  int age;

    private  Stringsex;

    public Student(String name, int age, String sex) {

        this.name = name;

        this.age = age;

        this.sex = sex;

    }

        public Student() {

        }

        public StringgetName() {

                return name;

        }

    public void setName(String name) {

            this.name = name;

    }

    public int getAge() {

            return age;

    }

    public void setAge(int age) {

            this.age = age;

    }

    public StringgetSex() {

            return sex;

    }

    public void setSex(String sex) {

            this.sex = sex;

    }

}

测试主函数方法:

package demobiaozhunlei;

public class DemoBiaoZhunLei {

public static void main(String[] args) {

        Student stu1 =new Student();

        stu1.setName("坂田银时");

        stu1.setAge(25);

        stu1.setSex("男");

        System.out.println("我的名字是:"+stu1.getName()+"\n我的年龄是:"+stu1.getAge()+"\n我的性别是:"+stu1.getSex());

        System.out.println("=========================");

        Student stu2 =new Student("炮姐",18,"女");

        System.out.println("我的名字是:"+stu2.getName()+"\n我的年龄是:"+stu2.getAge()+"\n我的性别是:"+stu2.getSex());

        System.out.println("=========================");

        stu2.setAge(25);

        System.out.println("我的名字是:"+stu2.getName()+"\n我的年龄改变为:"+stu2.getAge()+"\n我的性别是:"+stu2.getSex());

    }

}


标准类运行结果
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • 课程地址:Java基础之 — 反射(非常重要) (使用的前提条件:必须先得到代表的字节码的Class,Cla...
    叨唧唧的阅读 678评论 0 2
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,044评论 0 4
  • 暇来仿贤读益书, 不可散漫成懒猪。 欲求拔尖当翘楚, 勤学方能脱颖出。
    闲耕默耘阅读 281评论 2 10
  • 【芯尔妈】亲子共读记录30天~第21天~20171114 1.猜猜看:一边翻书一边告诉妈妈,是什么动物。这3本书上...
    蜡王府阅读 94评论 0 0
  • 忙碌总是充实和快乐的 早上七点出门,为什么呢,因为昨天回来的晚了,小区停车位满了,只好把车停在路边。 想到七点后,...
    林有朽木阅读 607评论 5 8