黑马程序员—面向对象知识总结(二)

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一封装
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

常用方式:将成员变量私有化,对外提供对应的set ,get方法对其进行访问。 细节:set方法与get方法的命名形式是固定的!均为 set/get + 成员变量名(首字母由变量时的小写变为大写)

2.封装的好处:
1)隐藏实现细节,提供公共的访问方式
2)提高了代码的复用性
3)提高安全性。
3.封装的原则:
1)将不需要对外提供的内容都隐藏起来。
2)把属性隐藏,提供公共方法对其访问。

private关键字:是一个权限修饰符,私有化修饰符
A:用于修饰成员变量和成员方法。
B:被修饰的内容在其他类中是不可以被访问的。

代码体现

class Demo1
{
    public static void main(String[] args) 
    {
        Person p = new Person();

        //p.name = "白子画";
        //p.name = "花千骨";
        //p.name = "杀阡陌";
        System.out.println(p.getName());
        p.eat();

        Person p2 = new Person();
        p2.setName("白子画");
        System.out.println(p2.getName());
        p2.eat();

        Person p3 = new Person();
        p3.setName("花千骨");
        System.out.println(p3.getName());
        p3.eat();

        Person p4 = new Person();
        p4.setName("杀阡陌");
        System.out.println(p4.getName());
        p4.eat();
    }
}

class Person
{
    private String name = "糖宝";
    private int age;

    //定义方法,用来成员变量name赋值
    public void setName(String mingzi) {
        //安全措施
        name = mingzi;
    }

    //定义方法,用来获取成员变量name
    public String getName() {
        return name;
    }

    //定义方法,用来成员变量age赋值
    public void setAge(int nianling) {
        age = nianling;
    }

    //定义方法,用来获取成员变量age
    public int getAge() {
        return age;
    }

    public void eat() {
        System.out.println(name+"吃了");
    }
}

二构造方法
用来创建实例对象
创建同时可以给属性赋值
(1)格式及特点
格式:
访问权限修饰符 类名(参数…){}

访问权限修饰符:
public,private 特点: A:方法名和类名相同 B:没有返回值类型 C:没有具体的返回值
(2)注意事项:
A:如果你不给构造方法,jvm会自动给你一个无参构造方法。
B:如果你给出了构造方法,那么,jvm将不再提供无参构造方法。
这个时候,你如果要使用无参构造方法:只能自己提供

三this关键字
(1)是一个关键字。代表当前对象的引用。
简单记:在方法中,哪个对象调用方法,this就代表谁。
(2)应用场景:
解决局部变量隐藏成员变量问题。
在构造方法中调用其他的构造方法(必须写在第一行)
this();
在其他方法中可以使用this.普通方法名()调用普通方法
this.eat();
代码实现
(3)以下情况必须显示的使用this:
1).“局部变量”覆盖“成员变量”时,可以使用this显示的访问被覆盖的“成员变量”;
否则访问的是“局部变量”;
2).在一个构造方法中调用本类的其它构造方法;this()或this(实参);

class Demo05
{
    public static void main(String[] args) 
    {
        Person p = new Person("雪见",16);
        p.eat("逍遥");
        p.eat();

        Person p2 = new Person("灵儿",16);
        p2.eat();
    }
}

class Person
{
    //定义成员变量
    private String name;
    private int age;
    //定义构造方法
    public Person(){}
    public Person(String name,int age) {
        this.name = name;
        this.age = age;
    }
    //定义普通方法
    public void eat(){
        System.out.println(name + "吃了");
    }

    public void eat(String name){
        System.out.println(name + "吃了");
    }
    //定义getters和setters
    public void setName(String mingzi) {
        name = mingzi;
    }
    public String getName() {
        return name;
    }
    public void setAge(int nianling) {
        age = nianling;
    }
    public int getAge() {
        return age;
    }
}

四static关键字
(1)是一个关键字。可以修饰成员变量和成员方法。
(2)静态的特点:
A:随着类的加载而加载
B:优先于对象存在
C:被类的所有对象共享
D:可以通过类名调用
(3)静态的注意事项:
A:在静态方法中是没有this关键字的。
B:静态方法只能访问静态的成员变量和静态的成员方法。
(4)静态内容的调用:
A:被对象调用
B:被类名调用
推荐被类名调用。
(5)什么时候该用static呢? 如果某个内容是所有对象共享的,就用静态修饰。
举例: 水杯和饮水机。 厕所和人。 老师和学生。 对于传智学生都是热爱编程。
代码实现

class Test04
{
    public static void main(String[] args) 
    {
        Student s = new Student();
        s.setName("紫萱");
        s.hitKeyBoard();

        Student s2 = new Student("长卿",21,"蜀山");
        s2.hitKeyBoard();
    }
}

class Student
{
    //定义私有化成员变量
    private String name;
    private int age;
    private String address;

    //定义空参构造
    public Student() {}
    //定义三个参数的构造
    public Student(String mingzi,int nianling,String dizhi) {
        name = mingzi;
        age = nianling;
        address = dizhi;
    }
    //定义普通功能性方法
    public void hitKeyBoard() {
        System.out.println(name+"在向着高薪前进!");
    }

    //定义各个属性的geters和setters

    public void setName(String mingzi) {
        name = mingzi;
    }

    public String getName() {
        return name;
    }

    public void setAge(int nianling) {
        age = nianling;
    }

    public int getAge() {
        return age;
    }

    public void setAddress(String dizhi) {
        address = dizhi;
    }

    public String getAddress() {
        return address;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值