day03--面向对象--Demo

package day03;

/*
 * 类的定义格式:
 * clsss 类名{
 *      声明成员变量;
 *      声明成员方法;
 * }
 * 
 * 类的命名规范:
 *      1.第一个字母要大写
 *      2.见名知意,名字有一定的意义,Student,Person,Car
 *      3.具有一定功能性的描述,如OrderService,StudentManager
 * 
 */

public class Demo01 {

    public static void main(String[] args) {

        // 通过new 关键字创建对象

        Car car = new Car();
        car.name = "benz";
        car.run();// 通过类的对象,调用类的成员方法
    }

}

class Car { // 声明汽车类
    String name;

    public void run() {
        // 开汽车
        System.out.println("正在驾驶" + name);
    }

}

这里写图片描述

package day03;

/*
 * 局部变量与成员变量的区别
 * 局部变量:随着方法入栈初始化,随着方法出栈而消失
 * 成员变量:随着对象的初始化创建,随着对象的回收而消失
 */

public class Demo2 {

    public static void main(String[] args) {

        Person person = new Person();
        person.name = "disen";
        person.age = 30;
        person.say();
        //System.gc();
        person = null;// person指向的堆内存可以被垃圾回收器(GC)回收
    }

}

class Person {
    String name;
    int age;

    public void say() {
        int id = 1001;
        System.out.println(id + "-->" + name + "," + age);

    }
}
package day03;

/*
 * Java面向对象的三大特征:封装、继承、多态
 * 
 * 封装:向外部提供有用的成员(属性、方法)
 * 
 * 成员四个访问权限:
 * private    私有的,只能在类的内部访问
 *[default]   默认的,可以在同一个包下访问
 * protected  受保护的,可以在类的内部和子类中访问
 * public     公有的,可以在任一地方访问
 * 
 * this:指向当前类对象,当出现局部变量与成员变量重名时,
 *      需要使用this来访问成员变量
 */
class Student {// 数据实体类
    private String name;// 默认值为null
    private int age;// 默认值为0
    String sex="男";

    // 方法名的命名方式为驼峰命名方法(setXxx,getXxx)
    public void setName(String name) {
        this.name = name;// this.name代表的是成员变量
    }

    public String getName() {
        return name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public String toString() {
        return "[name=" + name + ",age=" + age + ",sex=" + sex + "]";
    }
}

public class Demo3 {

    public static void main(String[] args) {

        Student stu = new Student();
        stu.setName("张三");
        stu.sex="女";
        stu.setAge(30);
        System.out.println("Student:"+stu);
    }

}
package day03;

/*
 * 构造方法:初始化成员变量
 * 
 * 命名:类名,且无返回值
 * 
 * 注意:
 *   1.构造方法只能用于初始化对象,不能被对象调用,或类的成员方法中调用
 *   2.默认构造方法为无参的,也是隐式构造方法
 *   3.可以提供有参的构造方法,但会覆盖默认的构造方法
 *     在初始化时,必须显示使用构造方法
 *   4.两个构造方法之间可以相互调用,使用this()方式调用,但必须在第一行
 */
class Animal {// 动物类
    private String name;

    public Animal() {// 无参的方法
        this("kit");// 调用有参的构造方法,必须在第一行
        // name = "kit";

    }

    public Animal(String name) {
        // 带有参数的构造方法,默认情况下会覆盖无参的构造方法
        this.name = name;
    }

    public void sayHello() {
        System.out.println("大家好,我是Animal,我叫" + name);
    }

}

public class Demo4 {

    public static void main(String[] args) {

        Animal kit = new Animal();
        kit.sayHello();

        Animal tom = new Animal("Tom");
        tom.sayHello();
        // 匿名对象,不存在一个引用指向这个对象
        new Animal("Haha").sayHello();// 当执行完成后.对象空间可以被垃圾回收器回收

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值