海阔天空

当前时间为:
欢迎大家来到海阔天空https://www.9713job.com,广告合作以及淘宝商家推广请微信联系15357240395

2020java教程:面向对象

未分类
2020-08-08 14:59:19
1822677238@qq.com

手机扫码查看

2020java教程:面向对象

面向对象

想要知道对象是什么,就先知道什么是程序。

什么是程序?

程序是为了模拟现实世界,解决现实问题,而使用计算机语言编写的指令集和。

如:支付宝是为了生活便捷,收付款功能。美图是为了修图和美颜的。

讨论:世界是由什么组成的?

相信大家的答案都不一致,都很抽象。
在程序猿眼里,世界的组成最为明确:世界是由无数个 对象 组成的

那什么是对象?
面向对象的思想(Object Oriented Programming)
一切客观存在的事物都是对象,万物皆对象。
任何对象,一定具有自己的 特征 和 行为。

对象的特征为:一般称为属性,为名词,代表对象有什么。
对象的行为有:一般称为方法,为动词,代表对象能做 什么。

现实生活中的对象:
如:手机
属性为品牌、颜色、型号….
方法为接打电话、收发短信…

程序中的对象
如何使用程序模拟现实世界,解决现实问题?
首先,在程序当中,必须具有和现实生活中相同的问题,用以模拟现实世界。
然后,使用程序中的对象代表现实中的对象,并执行操作,进而解决现实问题。

如何在程序中创造出与现实中一样的对象?
现实中的对象多数来自于 “ 模板 ” ,程序中的对象也应该具有 “模板”。
模板也称之为 类

什么是类?
汽车设计图纸规定了该款汽车所有的组成部分,包括外观形状、内部结构、发动机型号、安全,参数等具体的信息。这即为现实对象的模板。程序中的模板也有相同作用,称之为“类”。

按照设计图纸创造出来的汽车,才是真实存在、切实可用的实体,所以汽车实体被称为现实中的对象。而通过程序中的模板创造出来的实体,即为程序中的对象,称之为“对象”。

类的抽取
在一组相同或类似的对象中,抽取出共性的特征和行为,保留所关注的部分。
如:贵宾犬、牧羊犬、松狮、博美。
都有属性:毛色、体重、品种…
都有方法:吃、睡、跑

 

类的定义和创建

public class demos{
    public static void main(String[] args) {
        Cat c=new Cat("猫","杂牌","母鸡啊",99);
        c.eat("狗粮");
        c.sleep(99);
    }
}
//类的定义,创建猫对象
class Cat{
    //属性
    String name;//猫的名字
    String breed;//猫的品种
    String sex;//猫的性别
    int age;//猫的年龄
    //对象的构造方法
    public Cat(){
        System.out.println("构造方法");
    }
    public Cat(String name,String breed,String sex,int age){
        System.out.println("猫的名字为"+name+",品种为"+breed+",性别为"+sex+",年龄为"+age);
    }
    //方法
    public void sleep(int hours){
        System.out.println("猫睡了"+hours+"个小时");
    }
    public void eat(String feed){
        System.out.println("猫吃了"+feed);
    }
    public void eat(){
        System.out.println("定义猫的吃方法");
    }
    public void sleep(){
        System.out.println("定义猫的睡觉方法");
    }
}

类与对象的关系
类:定义了对象应具有的特征和行为,类是对象的模板
对象:拥有多个特征和行为的实体,对象是类的实例

什么是局部变量?什么是成员变量?

局部变量:
定义位置:方法或方法内的结构当中。
默认值:无默认值。
使用范围:从定义行到包含其结构结束。
命名冲突:不允许重名。

成员变量又称实例变量:
定义位置:类的内部,方法的外部。
默认值:字面值(与数组相同)
使用范围:本类有效。
命名冲突:可与局部变量重名,局部变量优先

方法的创建

public class demos{
    public static void main(String[] args) {
        Student s1=new Student();
        s1.name="张三";
        s1.play();
        s1.play(5);
    }
}
class Student{
    String name;
    /*
    方法的创建,跟函数的创建一样
    修饰符  返回值类型  方法名(形参列表){
        方法体
    }
     */
    public void play(){ // 实例方法
        System.out.println(name+"正在玩");
    }
    public void play(int hours){
        // 实例方法带参数
        System.out.println(name+"玩了"+hours+"小时");
    }
}

方法的重载

public class demos{
    public static void main(String[] args) {
        Student s1=new Student();
        s1.name="张三";
        s1.play("绝地求生");
        s1.play(5);
    }
}
class Student{
    String name;
    /*
    方法的重载
    有些情况下,对象的同一种行为可能存在多种实现过程
    一个类中定义多个相同名称的方法
    要求:方法名称相同,参数列表不同(个数,类型,顺序)
    与访问修饰符、返回值类型 无关
    好处:方便、灵活
     */
    public void play(String s){
        //参数比如为 游戏名
        System.out.println(name+"正在玩"+s);
    }
    public void play(int hours){
        //参数比如为 玩了多长时间的游戏
        System.out.println(name+"玩了"+hours+"小时");
    }
}

对象的创建方法
public class demos{
    public static void main(String[] args) {
        System.out.println("对象的创建方式1");
        Student s1=new Student("张三",22,99.9);
        Student s2=new Student("隔壁老王",55,0);
        Student s3=new Student("小明",16,100);

        System.out.println("对象的创建方式2");
        Student[] s=new Student[3];
        s[0]=new Student("张三1",22,99.9);
        s[1]=new Student("隔壁老王1",55,0);
        s[2]=new Student("小明1",16,100);

        System.out.println("对象的创建方式3");
        Student[] ss={
                new Student("张三2",22,99.9),
                new Student("隔壁老王2",55,0),
                new Student("小明2",16,100)
        };

    }
}
class Student{
    String name;
    int age;
    double score;
    //构造方法:类中的特殊方法,主要用于创建对象
    /*
    注意:
    1.构造方法没有返回值
    2.构造方法的方法名必须与类名完全相同
    3.创建对象时,触发构造方法的调用,不可通过句点手动调用
    4.如果没有在类中显示定义构造方法,则编译器默认提供无参构造方法
     */
    public Student(){
        System.out.println("这是无参构造方法");
    }
    public Student(String name,int age,double score){
        System.out.println("学生"+name+",年龄"+age+",成绩为"+score);
    }
}

this关键字的使用
public class demos{
    public static void main(String[] args) {
        Student[] s={
                new Student("张三",22,"男",99.9),
                new Student("小明",16,"女",100),
                new Student("隔壁老王",50,"男",0)
        };
        s[0].eat("辣条");
        s[1].eat("底料");
        s[2].eat("空盘子");
    }
}
class Student{
    String name;
    int age;
    String sex;
    double score;
    public Student() {}
    public Student(String name,int age, String sex, double score) {
        this.name=name;//this代表当前实例,指向该对象
        System.out.println("学生"+name+",年龄"+age+",性别"+sex+",分数"+score);
    }
    public void eat(String feed){
        System.out.println(this.name+"请老师吃"+feed);
    }
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注