JAVA面向对象特点之封装 成员变量 局部变量 匿名对象 与 全限定类名

面向对象特点

1.封装
2.继承
3.多态

没有封装举例:
迅雷 核心功能 下载
50个程序员 50亲戚
比如有下载类
下载速度 ---- 20M/s
         ---- 200kb/s
下载方法(URL)
下载方法(种子)

没有封装时,将不受控制
封装
将类中的属性或者方法对外界隐藏  然后提供公共的访问方式
成员变量私有化 是封装的一种体现

private 私有(权限修饰符)

java bean规范
1.成员变量私有化(并且提供set/get方法)
代码举例
public class Demo04{
    public static void main(String[] args){

    }
}

class Student{
    //成员变量私有化(只能本类进行访问 本类以外无法访问)
    //不能通过对象.属性来直接访问 但是可以通过方法来间接询问
    private String name;
    private int age;

    public void sayHi(){
        //就近原则
        String name = "刘荣胜";
        System.out.println(name + " " + age);
    }
    //set/get 方法
    //命名规范 以set或者get开头 小驼峰
    //获取
    public String getName(){
        return name;
    }
    public int getAge(){
        this.age = age;
    }
}
代码举例 :猫类
需求:
属性:
猫名/颜色/种类
方法:
会吃鱼/会卖萌/会找老鼠

构造方法:初始化成员变量
注意:
1.构造方法 没有返回值 甚至不用写返回的类型
2.构造方法的方法名 与 类名相同
格式:
关键字 构造方法名(){

}
package com.lanou3g.bean;
public class Cat{

    private String name;
    private String color;
    private String type;

    //无参构造方法
    public Cat(){
        name = "小花";
        color = "白色";
        type = "中华田园猫";
    }
    //三种基本行为
    public void eat(){
        System.out.println("猫 会 吃鱼");
    }
    public void fun(){
        System.out.println("猫 会 卖萌");
    }
    public void zhua(){
        System.out.println("猫 会 抓 老鼠");
    }

    //set  get方法
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    public String getColor(){
        return color;
    }
    public void setColor(String color){
        this.color = color;
    }
    public String getType(){
        Return type;
    }
    public void setType(String type){
        this.type = type;
    }

    //自我介绍方法
    public void sayHi(){
        System.out.println("姓名:" + name);
        System.out.println("颜色:" + color);
        System.out.println("类别:" + type);
    }
}
全限定类名
package com.lanou3g.bean1;

public class Cat{
    public void sayHi(){
        System.out.println("我是bean1包下得cat");
    }
}
测试猫类
//另建一个类 名为CatTest,用来测试上述cat类
package com.lanou3g.bean;
public static void main(String[] args){
    //构造方法 如何调用
    //构造方法是不用咱们调用的
    //当你创建对象的时候 系统会帮你调用构造方法
    Cat cat = new Cat();
    cat.setName("小花");
    cat.setColor("白色");
    cat.setType("中华田园猫");
    cat.sayHi();

    //创建bean1包下得 Cat对象
    //如果类名相同的话 创建对象的时候 
    //要使用全限定类名
    com.lanou3g.bean1.Cat cat2 = new com.lanou3g.bean1.Cat();
    cat2.sayHi();
}
书写位置
成员变量(实例变量)   写在类中 方法外
成员方法(实例方法)   写在类中

如何创建对象
类名 对象名 = new 类名();
成员变量与局部变量的区别
书写位置:
成员变量 写在类中方法外
局部变量 写在方法中或者方法的声明上

内存中得位置:
成员变量: 存在于堆类存中
局部变量: 存在栈内存中

初值:
成员变量 有默认的初值 0 或者 null
局部变量 没有默认值 如果要使用的话 必须要给初值

生命周期
成员变量 随着对象的创建而创建 随着对象的销毁而销毁
局部变量 随着方法存在
匿名类对象
匿名对象:没有名字的对象
1.如果你只调用方法的话  这时可以使用匿名对象(测试时候会用)
2.匿名对象可以当做参数进行传递

好处:当参数时 代码简便
弊端:无法直接修改里面的值
匿名对象代码举例
public class Demo03{
    public static Person fun(String name){
        Person person = new Person();
        person.name = name;
        person.sayHi();
        return person;
    }

    public static Person fun1(String name, Person person){
        person.name = name;
        return person;
    }

    public static void main(String[] args){
        Person person = fun("谢霆锋");

        Person person1 = new Person();
        Person person2 = fun1("刘德华",person1); 
        person2.sayHi();

        Person person3 = fun("周润发", new Person());
        person3.sayHi();
    }

}
class Person {
    String name;
    int age = 9;
    public Person(){

    }
    public Person(String name){
        this.name = name;
    }
    public sayHi(){
        System.out.println("姓名:" + name);
        System.out.println("年龄:" + age);
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值